2016-06-03 7 views
0

Ich habe nach dieser Antwort gesucht, aber überhaupt keine Antwort gefunden. Es könnte zu spezifisch sein. Es ist eine todoApp und ich bin immer noch dabei, die Logik meiner Aktivität in Fragmente zu migrieren.Android - Wie verwende ich das gleiche Fragment zum Bearbeiten und Erstellen einer neuen Instanz meines Modells?

TodoListActivity.java (Dies ist Fragment wo TodoActivity der genannt wird)

// ... 
    addButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Todo todo = new Todo(); 
        TodoSingleton.get(TodoListActivity.this).addTodo(todo); 
        Intent i = TodoActivity.newIntent(TodoListActivity.this, todo.getId()); 
        startActivity(i); 
       } 
      }); 
// ... 

TodoFragment.java

//... 
@Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.todo_fragment, container, false); 

     todoTitleEditText = (EditText) view.findViewById(R.id.todo_title_ed); 

     if(mTodo.getmTitle() != null) { 
      todoTitleEditText.setText(mTodo.getmTitle()); 
     } 

     todoDescriptioneEditText = (EditText) view.findViewById(R.id.todo_description_ed); 

     if(mTodo.getmDescription() != null) { 
      todoDescriptioneEditText.setText(mTodo.getmDescription()); 
     } 

     return view; 
    } 
//... 

Frage

Ich mag diese wenn Aussagen fühlen, sind nur nicht der richtige Weg. Wie würde ich das gleiche Fragment zum Erstellen neuer Modellinstanzen und zur Bearbeitung verwenden?

Lassen Sie mich wissen, wenn es nicht klar genug ist.

Dank

+0

Ich habe gerade mit einem Freund gesprochen und er sagte, dass ich eine Flagge in mein Fragment in ord übergeben könnte um zu überprüfen, ob ich eine neue Instanz erstelle oder eine vorhandene bearbeite. –

Antwort

0

Sie benötigen mindestens einen Unterschied zwischen den Fragmenten aus der gleichen Klasse zu machen.

hinzufügen, um dieses Verfahren zu fragmentieren (ändern nach Bedarf):

public class ActivitiesFragment extends Fragment{ 

    private int mFragmentType; 

    public ActivitiesFragment(){ 
    } 

    public static ActivitiesFragment getInstance(int pageNumber){ 
     Bundle args = new Bundle(); 
     args.putInt("type", pageNumber); 
     ActivitiesFragment fragment = new ActivitiesFragment(); 
     fragment.setArguments(args); 
     fragment.mFragmentType = pageNumber; 
     return fragment; 
    } 

} 

und jetzt können Sie zwei unterschiedliche Fragmente erhalten:

ActivitiesFragment fragmentOne = ActivitiesFragment.getInstance(1); 
ActivitiesFragment fragmentTwo = ActivitiesFragment.getInstance(2); 
//... 
0

Wenn Sie das gleiche Fragment für neues Modell verwenden möchten Beispiel, Sie können das folgendermaßen tun:

public class TodoFragmentFactory { 

    private TodoFragment mFragment; 

    private TodoFragment(){ 

    } 

    public static TodoFragment getInstance(Todo todo){ 
     if(mFragment==null){ 
     mFragment = new TodoFragment(); 
     } 
     mFragment.setTodo(todo); 
     return mFragment; 
    } 

} 
Verwandte Themen