gpt4 book ai didi

带有列表导航的 Android ActionBar : save selected item position during configuration change?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:57 25 4
gpt4 key购买 nike

我有一个带有列表导航模式的 ActionBar。问题是从导航微调器中选择项目后,当屏幕方向更改时,导航微调器选择的索引重置为 0。

如何在配置更改期间保留微调器的选定索引?

谢谢

最佳答案

你应该覆盖 onSaveInstanceState并将选定的导航列表位置保存到 bundle 中。不要忘记在 onCreate 中恢复位置.

看下面的例子:

public class MainActivity
{

private static final String CURRENT_FRAGMENT_TAG = "fragmentPosition";

@Inject @Named("navigationFragments")
private Provider<? extends Fragment>[] fragmentProviders;

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

final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(ArrayAdapter.createFromResource(
this, R.array.navigation_menu, android.R.layout.simple_list_item_1), new ActionBar.OnNavigationListener()
{
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId)
{
final String fragmentTag = "fragment-" + itemPosition;

// to prevent fragment re-selection and loosing early saved state
if (getSupportFragmentManager().findFragmentByTag(fragmentTag) != null)
{
return true;
}

final Fragment fragment = fragmentProviders[itemPosition].get();
getSupportFragmentManager().beginTransaction().
replace(android.R.id.content, fragment, fragmentTag).
commit();
return true;
}
});
actionBar.setSelectedNavigationItem(bundle != null
? bundle.getInt(CURRENT_FRAGMENT_TAG)
: 0);
}

@Override
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt(CURRENT_FRAGMENT_TAG, getSupportActionBar().getSelectedNavigationIndex());
}

/*

Additional stuff here

*/

}

Provider<? extends Fragment>[] fragmentProviders是创建新 fragment 的工厂方法对象的列表。替换 getSupportActionBar()getActionBar()getSupportFragmentManager()getFragmentManager()如果你不使用 actionbarsherlock

关于带有列表导航的 Android ActionBar : save selected item position during configuration change?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com