我有一個Activity(ActivityMain)和一些片段的應用程序。 NavigationDrawer控制片段的切換。在某些片段中,用戶有機會在不打開NavigationDrawer的情況下切換到另一個片段(例如,單擊按鈕)。從另一個片段更改NavigationDrawer selectedItem
如果我使用NavigationDrawer在片段之間切換,但是如果我使用片段內的控件(例如按鈕)切換到另一個片段,我無法設置NavigationDraver的selectedItem屬性(實際上是a ND中的ListView)selectedItem屬性。
NavigationDrawer的selectedItem屬性與sharedPreferences一起存儲,並在NavigationDrawer片段中的onDrawerOpened方法中恢復。
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
}
我試圖把觀STATE_SELECTED_POSITION值的onclick事件中選擇指標,如下,但並不奏效。我也無法從其他片段中的sharedPreferences中獲得值。
public void navigationRowClick(View view) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
switch(view.getId()) {
case R.id.tr_conv:
sp.edit().putInt(STATE_SELECTED_POSITION, 1);
((MainActivity)getActivity()).changeFrame(1);
((MainActivity)getActivity()).restoreActionBar();
break;
case R.id.trCalc:
sp.edit().putInt(STATE_SELECTED_POSITION, 2);
((MainActivity)getActivity()).changeFrame(2);
((MainActivity)getActivity()).restoreActionBar();
break;
case R.id.trCalo:
Integer i = sp.getInt(STATE_SELECTED_POSITION, 100); // get value test
String s = i.toString();
Toast.makeText(getActivity(), s, Toast.LENGTH_SHORT).show();
break;
}
}
我的問題是,我應該如何設置另一個片段的NavigationDrawer selectedItem?你有這個任務的最佳做法嗎?
非常感謝您的建議。
在onclick事件切換碎片按鈕
在切換片段的按鈕的onClick事件中放置了outState.putInt(STATE_SELECTED_POSITION,position);該位置應該是該片段在ND – 2014-12-07 19:14:19
謝謝您的建議,Goran。不幸的是,建議的解決方案無效。也許我沒有用正確的方式使用SharedPreferences。我編輯了我的帖子。 – Seba 2014-12-07 22:54:04