मेरे पास टुकड़ों का उपयोग करके एक ऐप है, जिनमें से सभी एक ही गतिविधि में निहित हैं। गतिविधि बटन के मेनू वाले एक टुकड़े से शुरू होती है, जिनमें से सभी मूल बटन/मेनू खंड को बदलने के लिए विभिन्न सूचीफ्रेम का कारण बनती हैं।अभिविन्यास परिवर्तन पर सूची खंड में सूची बनाए रखना
मेरी समस्या यह है कि एक अभिविन्यास परिवर्तन पर, यदि गतिविधि सूचीदृश्यों में से किसी एक को प्रदर्शित कर रही है, तो यह दूर हो जाती है और बटन मेनू लौटाता है। मैं समझता हूं कि यह क्यों हो रहा है ... गतिविधि नष्ट हो गई है और फिर से बनाई गई है, लेकिन इसके आसपास काम नहीं करना है और अभिविन्यास परिवर्तन के माध्यम से सूची दृश्य/वर्तमान खंड को बनाए रखना है।
मुझे setRetainInstance
और here का उपयोग करने का उदाहरण मिला है, लेकिन मैं यह नहीं समझ सकता कि बटन मेनू के साथ मेरी स्थिति में इसे कैसे लागू किया जाए या संभावना है कि मैं जिस टुकड़े को बरकरार रखना चाहता हूं वह कई अलग-अलग हो सकता है लोगों को।
नीचे मुख्य गतिविधि और सूचीकरण में से एक दिखाने के लिए कोड को सरल बनाया गया है।
कोई भी पॉइंटर्स जो इसे जोड़ने के लिए जोड़ता है ताकि सूची खंड बनाए रखा जाएगा, इसकी सराहना की जाएगी।
गतिविधि
public class Main extends FragmentActivity {
private MainMenuFragment menu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
menu = new MainMenuFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.pane, menu).commit();
}
}
ListFragment
public class ItemListFragment extends ListFragment {
private TextView header;
private TextView empty;
private Button add;
public static Cursor itemCursor;
private GroceryDB mDbHelper;
public static long mRowId;
public static CheckCursorAdapter lists;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.common_list, container, false);
header = (TextView) v.findViewById(R.id.header);
empty = (TextView) v.findViewById(android.R.id.empty);
header.setText(R.string.header_item);
empty.setText(R.string.empty_items);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mRowId=0;
mDbHelper = new GroceryDB(getActivity());
mDbHelper.open();
itemCursor = mDbHelper.fetchAllItems();
getActivity().startManagingCursor(itemCursor);
String[] from = new String[] { GroceryDB.ITEM_NAME };
int[] to = new int[] { R.id.ListItem };
lists = new CheckCursorAdapter(getActivity(),
R.layout.listlayout_itemlist, itemCursor, from, to);
setListAdapter(lists);
}
}
अच्छा, वह अविश्वसनीय रूप से शर्मनाक था (मेरे गूंगा का उल्लेख नहीं)। मैं ** ** जानता हूं कि मुझे सहेजे गए इन्स्टेंसस्टेट() के लिए जांच करनी चाहिए, लेकिन किसी कारण से मैंने इस बार ऐसा नहीं किया और कभी भी इसके बारे में सोचा नहीं। जल्दी जवाब देने का शुक्रिया। – Barak