में गलत खंड डालता है मेरे पास एक एक्शनबार ड्रॉपडाउन नेविगेशन है। समस्या तब होती है जब मैं एक अलग टुकड़े पर स्विच करता हूं, फिर एक अभिविन्यास परिवर्तन करता हूं, यह पहले खंड को किसी भी तरह से रखता है, भले ही मुझे लगता है कि मैं सहेजे गए इंस्टेंसस्टेट को सही तरीके से सौंप रहा हूं। समस्या यह प्रतीत होती है कि NavigationItem पर चयन किया जाता है, तो .. मैं इसे सही ढंग से कैसे संभालेंगे? मैं savedInstanceState चर एक क्षेत्र बना सकता है, लेकिन यह सिर्फ गलत लगता है ...एक्शनबार ड्रॉप डाउन नेविगेशन - ओरिएंटेशन चेंज
public class MainActivity extends FragmentActivity implements MyListFragment.OnArticleSelectedListener {
public static final String TAG = "MainActivity";
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null) {
Fragment savedFragment = getSupportFragmentManager().getFragment(savedInstanceState, "saved_fragment");
Log.d(MainActivity.TAG, "savedInstanceState != null: " + savedFragment.getTag());
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, savedFragment, savedFragment.getTag())
.commit();
} else {
Log.d(MainActivity.TAG, "savedInstanceState == null");
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, new MyListFragment(), MyListFragment.TAG)
.commit();
}
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
String[] array = new String[] { "Inzeráty", "Dummy frag" };
SpinnerAdapter mSpinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,
array);
actionBar.setListNavigationCallbacks(mSpinnerAdapter, new ActionBar.OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
Log.d(MainActivity.TAG, "onNavitagionItemSelected");
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
switch(itemPosition) {
case 0:
transaction.replace(R.id.fragment_container, new MyListFragment(), MyListFragment.TAG);
break;
case 1:
transaction.replace(R.id.fragment_container, new MyDummyFragment(), MyDummyFragment.TAG);
break;
}
transaction.commit();
return true;
}
});
}
@Override
public void onArticleSelected(Bundle bundle) {
Log.d(MainActivity.TAG, "MainActivity # onArticleSelected");
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
Log.d(MainActivity.TAG, "MainActivity # onSaveInstanceState: " + currentFragment.getTag());
getSupportFragmentManager().putFragment(outState, "saved_fragment", currentFragment);
super.onSaveInstanceState(outState);
}
}
नमस्ते, जो मैंने वास्तव में समाप्त किया था वह सहेजे गए इंस्टेंसेंस – urSus
में ड्रॉपडाउन में चुने गए आइटम की अनुक्रमणिका को जारी रख रहा था। मैं यह भी कर रहा था (वास्तव में मैंने इंडेक्स को साझा प्रेफरेंस के रूप में संग्रहीत किया ताकि इसका उपयोग ऐप शुरू करने पर किया जा सके बाद में खोला गया था जब स्मृति में नहीं चल रहा था)। जिस समस्या का सामना करना पड़ रहा था वह थोड़ा अलग है जिसमें दिखाई देने वाला टुकड़ा एक और बच्चा टुकड़ा शुरू कर सकता है। घूर्णन पर यह फिर बच्चे के बजाय पैरेंट टुकड़े पर वापस जायेगा, ऊपर दिए गए कोड ने मुझे उस दूसरे मुद्दे के आसपास काम करने की अनुमति दी। –
यह क्रिया खंड पर ड्रॉप डाउन मेनू में गलत टुकड़ा प्रदर्शित होने का कारण बनता है। – howettl