2012-04-04 12 views
6

अब यह एक सप्ताह है कि मैं टुकड़ों को एक साधारण गतिविधि-आधारित ऐप पोर्ट करने का प्रयास करता हूं। मैं पूरी तरह से अटक गया हूँ।गतिविधि से लेकर टुकड़े तक पोर्टिंग के साथ अटक

यह जानवर संदर्भमेनू और विकल्पमेनस के साथ एक साधारण सूची, विवरण, जोड़ें/संपादित करें। मैंने इसे सही बनाने की कोशिश की: फोन और टैबलेट के लिए v4 समर्थन-पैकेज का उपयोग करके, अपनी खुद की फाइल में प्रत्येक टुकड़े और गतिविधियां, टुकड़े सब कुछ उपयोग करने योग्य टुकड़े करना चाहिए और कॉलबैक (उनमें से बहुत से) गतिविधियों को सूचित करने के लिए चारों ओर उड़ते हैं और क्या करना है इसके बारे में टुकड़े। SQLiteOpenHelper से ContentProvider में कनवर्ट करना, विकल्पमेनू से actionbarmenu में कनवर्ट करना, और, और, और ... (लगभग हर चीज जिसे मैंने उपयोग किया है अब हटा दिया गया है)।

यह भयानक है। मेरा सरल और छोटा काम करने वाला गतिविधि-आधारित ऐप अब आकार के लगभग 3 गुना है और बहुत सी चीजें अभी तक काम नहीं कर रही हैं।

यदि आवश्यक है तो मैं अपना कोड यहां जोड़ सकता हूं - लेकिन यह बहुत सारी चीजें हैं (आपको चेतावनी दी गई है)।

मेरा प्रश्न: क्या कोई सूची के साथ एक पूर्ण उदाहरण साझा करने के इच्छुक है, विवरण और जोड़ें/संपादित करें? इस उदाहरण को टुकड़े और क्रियाकलापों के लिए अलग-अलग फ़ाइलों का उपयोग करना चाहिए (न कि Google से सभी में एक पैकेज)।

कृपया नीचे मत छोड़ो। मैं वास्तव में देखना चाहता हूं कि इसे सही कैसे बनाया जाए।

अग्रिम में बहुत धन्यवाद।

संपादित करें:

public class ActivityList extends FragmentActivity implements FragmentList.MyContextItemSelectedListener, 
                 FragmentList.MyDeleteListener, 
                 FragmentList.MyListItemClickListener, 
                 FragmentList.MyOptionsItemSelectedListener, 
                 FragmentDetails.MyDeleteListener, 
                 FragmentDetails.MyOptionsItemSelectedListener { 

    @Override 
    public void myContextItemSelected(final int action, final long id) { 
     if (action == R.id.men_add) { 
      processEdit(0); 
     } else if (action == R.id.men_delete) { 
      processUpdateList(); 
     } else if (action == R.id.men_details) { 
      processDetails(id); 
     } else if (action == R.id.men_edit) { 
      processEdit(id); 
     } 
    } 

    @Override 
    public void myDelete(final long id) { 
     processUpdateList(); 
    } 

    @Override 
    public void myListItemClick(final long id) { 
     processDetails(id); 
    } 

    @Override 
    public void myOptionsItemSelected(final int action) { 
     myOptionsItemSelected(action, 0); 
    } 

    @Override 
    public void myOptionsItemSelected(final int action, final long id) { 
     if (action == R.id.men_add) { 
      processEdit(0); 
     } else if (action == R.id.men_edit) { 
      processEdit(id); 
     } else if (action == R.id.men_preferences) { 
      processPreferences(); 
     } 
    } 

    @Override 
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) { 
     processUpdateList(); 
    } 

    @Override 
    public void onCreate(final Bundle bundle) { 
     super.onCreate(bundle); 

     setContentView(R.layout.activitylist); 
    } 

    private void processEdit(final long id) { 
     Intent intent = new Intent(this, ActivityEdit.class); 
     intent.putExtra("ID", id); 
     startActivityForResult(intent, MyConstants.DLG_TABLE1EDIT); 
    } 

    private void processDetails(final long id) { 
     if (Tools.isXlargeLand(getApplicationContext())) { 
      Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.right); 
      if (fragment == null || 
        (fragment instanceof FragmentDetails && ((FragmentDetails) fragment).getCurrentId() != id)) { 
       fragment = new FragmentDetails(id); 

       FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
       transaction.replace(R.id.right, fragment); 
       transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
       transaction.commit(); 
      } 
     } else { 
      Intent intent = new Intent(this, ActivityDetails.class); 
      intent.putExtra("ID", id); 
      startActivityForResult(intent, MyConstants.DLG_TABLE1SHOW); 
     } 
    } 

    private void processPreferences() { 
     Intent intent = new Intent(this, MyPreferenceActivity.class); 
     startActivityForResult(intent, MyConstants.DLG_PREFERENCES); 
    } 

    private void processUpdateList() { 
     // TODO: 
    } 
} 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <fragment 
     class="com.test.app.FragmentList" 
     android:id="@+id/fragmentlist" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:name="com.test.app.FragmentList" /> 
</LinearLayout> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <fragment 
     class="com.test.app.FragmentList" 
     android:id="@+id/fragmentlist" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_width="0dip" 
     android:name="com.test.app.FragmentList" /> 

    <FrameLayout 
     android:id="@+id/right" 
     android:layout_height="match_parent" 
     android:layout_weight="2" 
     android:layout_width="0dip" /> 
</LinearLayout> 

यहाँ:

यहाँ इसके साथ प्रारंभिक गतिविधि दो लेआउट (res/फोन और रेस के लिए लेआउट/टेबलेट के लिए लेआउट-बड़े भूमि) और ContextMenu है इसके साथ ListFragment पंक्ति लेआउट, विकल्प में और ContextMenu है:

public class FragmentList extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> { 

    private SimpleCursorAdapter   adapter; 
    private AlertDialog     alertDialog; 
    private Context      context; 
    private MyContextItemSelectedListener contextItemSelectedListener; 
    private MyDeleteListener    deleteListener; 
    private long       id; 
    private MyListItemClickListener  listItemClickListener; 
    private ListView      listView; 
    private MyOptionsItemSelectedListener optionsItemSelectedListener; 

    public interface MyContextItemSelectedListener { 
     public void myContextItemSelected(int action, long id); 
    } 

    public interface MyDeleteListener { 
     public void myDelete(long id); 
    } 

    public interface MyListItemClickListener { 
     public void myListItemClick(long id); 
    } 

    public interface MyOptionsItemSelectedListener { 
     public void myOptionsItemSelected(int action); 
    } 

    @Override 
    public void onActivityCreated(final Bundle bundle) { 
     super.onActivityCreated(bundle); 

     context = getActivity().getApplicationContext(); 

     listView = getListView(); 

     getActivity().getSupportLoaderManager().initLoader(MyConstants.LDR_TABLE1LIST, null, this); 

     adapter = new SimpleCursorAdapter(context, 
              R.layout.fragmentlist_row, 
              null, 
              new String[] { Table1.DESCRIPTION }, 
              new int[] { R.id.fragmentlist_row_description }, 
              CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); 
     setListAdapter(adapter); 
     setListShown(false); 

     registerForContextMenu(listView); 

     if (bundle != null && bundle.containsKey("ID")) { 
      id = bundle.getLong("ID"); 
      listItemClickListener.myListItemClick(id); 
     } 

     if (Tools.isXlargeLand(context)) { 
      listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     } 

     setHasOptionsMenu(true); 
    } 

    @Override 
    public void onAttach(final Activity activity) { 
     super.onAttach(activity); 

     // Reduced: Check for implemented listeners 
    } 

    @Override 
    public boolean onContextItemSelected(final MenuItem menuItem) { 
     AdapterContextMenuInfo adapterContextMenuInfo = (AdapterView.AdapterContextMenuInfo) menuItem.getMenuInfo(); 

     final long id = adapterContextMenuInfo.id; 

     if (menuItem.getItemId() == R.id.men_delete) { 
      processAlertDialog(id); 
      return true; 
     } else { 
      contextItemSelectedListener.myContextItemSelected(menuItem.getItemId(), adapterContextMenuInfo.id); 
     } 

     return super.onContextItemSelected(menuItem); 
    } 

    @Override 
    public void onCreateContextMenu(final ContextMenu contextMenu, final View view, final ContextMenuInfo contextMenuInfo) { 
     super.onCreateContextMenu(contextMenu, view, contextMenuInfo); 

     if (view.getId() == android.R.id.list) { 
      getActivity().getMenuInflater().inflate(R.menu.fragmentlist_context, contextMenu); 
     } 
    } 

    @Override 
    public Loader<Cursor> onCreateLoader(final int id, final Bundle bundle) { 
     MyCursorLoader loader = null; 

     switch (id) { 
      case MyConstants.LDR_TABLE1LIST: 
       loader = new MyCursorLoader(context, 
              MySQLiteOpenHelper.TABLE1_FETCH, 
              null); 
       break; 
     } 

     return loader; 
    } 

    @Override 
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater menuInflater) { 
     super.onCreateOptionsMenu(menu, menuInflater); 

     menu.clear(); 

     menuInflater.inflate(R.menu.fragmentlist, menu); 
    } 

    @Override 
    public void onListItemClick(final ListView listView, final View view, final int position, final long id) { 
     super.onListItemClick(listView, view, position, id); 

     this.id = id; 

     if (Tools.isXlargeLand(context)) { 
      listView.setItemChecked(position, true); 
     } 

     listItemClickListener.myListItemClick(id); 
    } 

    @Override 
    public void onLoaderReset(final Loader<Cursor> loader) { 
     adapter.swapCursor(null); 
    } 

    @Override 
    public void onLoadFinished(final Loader<Cursor> loader, final Cursor cursor) { 
     adapter.swapCursor(cursor); 

     setListShown(true); 
    } 

    @Override 
    public boolean onOptionsItemSelected(final MenuItem menuItem) { 
     optionsItemSelectedListener.myOptionsItemSelected(menuItem.getItemId()); 

     return super.onOptionsItemSelected(menuItem); 
    } 

    @Override 
    public void onSaveInstanceState(final Bundle bundle) { 
     super.onSaveInstanceState(bundle); 

     bundle.putLong("ID", id); 
    } 

    private void processAlertDialog(final long id) { 
     final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 
     alertDialogBuilder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(final DialogInterface dialogInterface, final int which) { 
       dialogInterface.dismiss(); 
      } 
     }); 
     alertDialogBuilder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(final DialogInterface dialogInterface, final int which) { 
       MyApplication.getSqliteOpenHelper().deleteTable1(id); 

       alertDialog.dismiss(); 

       deleteListener.myDelete(id); 
      } 
     }); 
     alertDialogBuilder.setCancelable(false); 
     alertDialogBuilder.setMessage(R.string.txt_reallydelete); 

     alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 
    } 
} 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" 
    android:paddingBottom="2dip" 
    android:paddingTop="2dip" > 

    <TextView 
     style="@style/TextViewLarge" 
     android:id="@+id/fragmentlist_row_description" 
     android:textStyle="bold" /> 
</LinearLayout> 


<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:icon="@drawable/ic_menu_add" 
     android:id="@+id/men_add" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/txt_add" /> 

    <item 
     android:icon="@drawable/ic_menu_preferences" 
     android:id="@+id/men_preferences" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/txt_preferences" /> 
</menu> 

<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:id="@+id/men_details" 
     android:title="@string/txt_details" /> 

    <item 
     android:id="@+id/men_edit" 
     android:title="@string/txt_edit" /> 

    <item 
     android:id="@+id/men_delete" 
     android:title="@string/txt_delete" /> 
</menu> 

यह DetailsActivity है:

public class ActivityDetails extends FragmentActivity implements FragmentDetails.MyDeleteListener, 
                    FragmentDetails.MyOptionsItemSelectedListener { 

    private long id; 

    @Override 
    public void myDelete(final long id) { 
     setResult(RESULT_OK); 
     finish(); 
    } 

    @Override 
    public void myOptionsItemSelected(final int action, final long id) { 
     if (action == R.id.men_add) { 
      processEdit(0); 
     } else if (action == R.id.men_edit) { 
      processEdit(id); 
     } else if (action == R.id.men_preferences) { 
      processPreferences(); 
     } 
    } 

    @Override 
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) { 
     if (requestCode == MyConstants.DLG_PREFERENCES || requestCode == MyConstants.DLG_TABLE1EDIT) { 
      finish(); 

      startActivity(getIntent()); 
     } 
    } 

    @Override 
    protected void onCreate(final Bundle bundle) { 
     super.onCreate(bundle); 

     if (bundle != null) { 
      if (bundle.containsKey("ID")) { 
       id = bundle.getLong("ID"); 
      } 
     } else { 
      Bundle bundleExtras = getIntent().getExtras(); 
      if (bundleExtras != null) { 
       id = bundleExtras.getLong("ID"); 
      } 

      processDetails(id); 
     } 
    } 

    @Override 
    public void onSaveInstanceState(final Bundle bundle) { 
     super.onSaveInstanceState(bundle); 

     bundle.putLong("ID", id); 
    } 

    private void processDetails(final long id) { 
     FragmentDetails fragment = new FragmentDetails(id); 

     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.replace(android.R.id.content, fragment); 
     transaction.commit(); 
    } 

    private void processEdit(final long id) { 
     Intent intent = new Intent(this, ActivityEdit.class); 
     intent.putExtra("ID", id); 
     startActivityForResult(intent, MyConstants.DLG_TABLE1EDIT); 
    } 

    private void processPreferences() { 
     Intent intent = new Intent(this, MyPreferenceActivity.class); 
     startActivityForResult(intent, MyConstants.DLG_PREFERENCES); 
    } 
} 

यहाँ लेआउट और मेनू के साथ DetailsFragment है:

public class FragmentDetails extends Fragment { 

    private AlertDialog     alertDialog; 
    private MyDeleteListener    deleteListener; 
    private long       id; 
    private MyOptionsItemSelectedListener optionsItemSelectedListener; 
    private TextView      textViewDescription; 
    private TextView      textViewId; 

    public FragmentDetails() { 
     id = 0; 
    } 

    public FragmentDetails(final long id) { 
     this.id = id; 
    } 

    public long getCurrentId() { 
     return id; 
    } 

    public interface MyDeleteListener { 
     public void myDelete(long id); 
    } 

    public interface MyOptionsItemSelectedListener { 
     public void myOptionsItemSelected(int action, long id); 
    } 

    @Override 
    public void onActivityCreated(final Bundle bundle) { 
     super.onActivityCreated(bundle); 

     if (bundle != null && bundle.containsKey("ID")) { 
      id = bundle.getLong("ID"); 
     } 

     setHasOptionsMenu(true); 
    } 

    @Override 
    public void onAttach(final Activity activity) { 
     super.onAttach(activity); 

     // Reduced 
    } 

    @Override 
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater menuInflater) { 
     super.onCreateOptionsMenu(menu, menuInflater); 

     menu.clear(); 

     menuInflater.inflate(R.menu.fragmentdetails, menu); 
    } 

    @Override 
    public View onCreateView(final LayoutInflater inflater, final ViewGroup viewGroup, final Bundle bundle) { 
     View view = inflater.inflate(R.layout.fragmentdetails, null); 

     textViewDescription = (TextView) view.findViewById(R.id.tv_description); 
     textViewId = (TextView) view.findViewById(R.id.tv_id); 

     if (id != 0) { 
      Table1 table1; 
      if ((table1 = MyApplication.getSqliteOpenHelper().getTable1(id)) != null) { 
       textViewDescription.setText(Tools.defaultString(table1.getDescription())); 
       textViewId.setText(Tools.defaultString(String.valueOf(table1.getId()))); 
      } 
     } 

     return view; 
    } 

    @Override 
    public boolean onOptionsItemSelected(final MenuItem menuItem) { 
     if (menuItem.getItemId() == R.id.men_delete) { 
      processAlertDialog(id); 
      return true; 
     } else { 
      optionsItemSelectedListener.myOptionsItemSelected(menuItem.getItemId(), id); 
     } 

     return super.onOptionsItemSelected(menuItem); 
    } 

    @Override 
    public void onSaveInstanceState(final Bundle bundle) { 
     super.onSaveInstanceState(bundle); 

     bundle.putLong("ID", id); 
    } 

    private void processAlertDialog(final long id) { 
     final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); 
     alertDialogBuilder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(final DialogInterface dialogInterface, final int which) { 
       alertDialog.dismiss(); 
       alertDialog = null; 
      } 
     }); 
     alertDialogBuilder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(final DialogInterface dialogInterface, final int which) { 
       MyApplication.getSqliteOpenHelper().deleteTable1(id); 

       alertDialog.dismiss(); 
       alertDialog = null; 

       deleteListener.myDelete(id); 
      } 
     }); 
     alertDialogBuilder.setCancelable(false); 
     alertDialogBuilder.setMessage(R.string.txt_reallydelete); 

     alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 
    } 
} 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="horizontal" > 

     <TextView 
      style="@style/TextViewStandard" 
      android:layout_weight="1" 
      android:text="@string/txt_id" /> 

     <TextView 
      style="@style/TextViewStandard" 
      android:id="@+id/tv_id" 
      android:layout_weight="1" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:orientation="horizontal" > 

     <TextView 
      style="@style/TextViewStandard" 
      android:layout_weight="1" 
      android:text="@string/txt_description" /> 

     <TextView 
      style="@style/TextViewStandard" 
      android:id="@+id/tv_description" 
      android:layout_weight="1" /> 
    </LinearLayout> 
</LinearLayout> 

<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:icon="@drawable/ic_menu_add" 
     android:id="@+id/men_add" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/txt_add" /> 

    <item 
     android:icon="@drawable/ic_menu_edit" 
     android:id="@+id/men_edit" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/txt_edit" /> 

    <item 
     android:icon="@drawable/ic_menu_delete" 
     android:id="@+id/men_delete" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/txt_delete" /> 

    <item 
     android:icon="@drawable/ic_menu_preferences" 
     android:id="@+id/men_preferences" 
     android:showAsAction="ifRoom|withText" 
     android:title="@string/txt_preferences" /> 
</menu> 

मैं EditActivity पोस्ट न करें यह बस एक टुकड़ा के बिना एक FragmentActivity है, क्योंकि।

+0

मेरा सुझाव एक ही समय में एक ही चीज़ को एक बार करने की कोशिश करने के बजाय एक समय ले रहा है। इस तरह परीक्षण करना भी आसान है। – Warpzit

+0

धन्यवाद। कर्सर लोडर काम कर रहा है, एक्शनबार लगभग काम कर रहा है (वर्तमान में दो गतिविधियों की श्रोताओं को निकाल दिया जाता है जब कोई एक्शनबार पर क्लिक करता है क्योंकि एक प्रारंभिक गतिविधि होती है और एक टुकड़ा घटक के लिए एक फोन गतिविधि होती है)। मेरे लिए सबसे बड़ी समस्या यह है कि मुझे नेविगेशन सही नहीं मिला है। मुझे अपना कोड यहां दिखाना अच्छा लगेगा, लेकिन मुझे डर है कि लोग उस सामान को पसंद नहीं करेंगे। –

+1

यदि आप किसी पूरे प्रोजेक्ट से लिंक करना चाहते हैं तो इसे जिथब पर रखें और वहां परियोजना को लिंक दें। – Warpzit

उत्तर

3

यह पूरा उत्तर नहीं हो सकता है लेकिन उत्तर का हिस्सा हो सकता है: आपके पास अभी भी एक मुख्य गतिविधि है, आपके एक्सएमएल में जहां आप सूचीदृश्य करते थे, अब आप एक फ़्रेमेलआउट जोड़ते हैं।अपने listfragment में

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // setup view 
    View view = inflater.inflate(R.layout.calendar_list, null); 

    mListAdapter = new CustomAdapter(getActivity(), R.layout.calendar_row, (ArrayList<Item>) mFullList); 
    setListAdapter(mListAdapter); 

    return view; 
} 

एक्सएमएल listfragment के लिए

 mMainFragment = new ListFragment(); 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

     fragmentTransaction.replace(R.id.center_container, mMainFragment); 

     fragmentTransaction.commit(); 
     mCurrentFragment = mMainFragment; 

:

@Override 
public void onListItemClick(ListView list, View view, int position, long id) { 
    final Item item = (Item) list.getAdapter().getItem(position); 
    mListener.OnListClick(item); 
} 
:

<somelayout> 
    <ListView android:id="@id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
</somelayout> 

सूची पर क्लिक करें के साथ टुकड़ा में शुरू हो रहा है तो अपनी गतिविधियों में आप निम्नलिखित जोड़ने onCreate

Wh ich इस श्रोता का उपयोग करता है:

सार्वजनिक इंटरफ़ेस OnListItemClickListener { सार्वजनिक शून्य ऑनलिस्ट क्लिक (आइटम आइटम); }

Listfragment शीर्ष में इस की जरूरत है:

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    try { 
     mListener = (OnListItemClickListener) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(activity.toString() + " must implement OnListItemClickListener"); 
    } 
} 

मुख्य गतिविधि तो इंटरफ़ेस को लागू करने और विस्तार टुकड़ा शुरू जब श्रोता शुरू हो रहा है के द्वारा इस का सदस्य बनता।

संपादित करें: ठीक है, इसलिए आपका प्रश्न कहीं अधिक मौलिक है :) याद रखें कि हर बार जब आप घूमते हैं तो आपकी गतिविधि में ऑनक्रेट को बुलाया जाता है ताकि आपकी गतिविधि को याद रखने की आवश्यकता हो जैसे कि यह दिखाने के लिए कि कौन सा दृश्य दिखाना है। इसके अलावा आपको बैक स्टैक में टुकड़े जोड़ने की आवश्यकता है या बैक कुंजी उनके साथ काम नहीं करनी चाहिए। कार्यों के साथ विचारों के रूप में टुकड़ों के बारे में सोचें, वे गतिविधियां नहीं हैं।

+0

फिर से धन्यवाद। हां, यह आसान हिस्सा है ;-) मेरे पास पहले से ही काम कर रहा है। मैंने यहां अपनी सामग्री पोस्ट करने का फैसला किया। बस मुझे कुछ मिनट दें - मैं उस कोड को हटा दूंगा जो नेविगेशन आदि से संबंधित नहीं है .. –

1

मैं किसी एक मुद्दे का उत्तर देने का प्रयास करूंगा। आप लिखते हैं:

"अब मैं घुमाता हूं और बैक बटन पर क्लिक करता हूं। मैं संपादन से सूची सूची में वापस आने की उम्मीद करता हूं। मेरे मामले में ऐप समाप्त होता है।"

आपके कोड नमूने से ऐसा लगता है कि आप बैक स्टैक में लेनदेन नहीं जोड़ रहे हैं। प्रतिबद्ध() को कॉल करने से पहले, addtooBackStack() को कॉल करें:

transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 
transaction.commit(); 
+0

धन्यवाद। की कोशिश करेंगे। –

संबंधित मुद्दे