相关疑难解决方法(0)

片段onCreateView和onActivityCreated调用了两次

我正在使用Android 4.0 ICS和片段开发应用程序.

考虑ICS 4.0.3(API级别15)API的演示示例应用程序中的此修改示例:

public class FragmentTabs extends Activity {

private static final String TAG = FragmentTabs.class.getSimpleName();

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

    final ActionBar bar = getActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

    bar.addTab(bar.newTab()
            .setText("Simple")
            .setTabListener(new TabListener<SimpleFragment>(
                    this, "mysimple", SimpleFragment.class)));

    if (savedInstanceState != null) {
        bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
        Log.d(TAG, "FragmentTabs.onCreate tab: " + savedInstanceState.getInt("tab"));
        Log.d(TAG, "FragmentTabs.onCreate number: " + savedInstanceState.getInt("number"));
    }

}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("tab", getActionBar().getSelectedNavigationIndex());
}

public static class TabListener<T extends Fragment> implements ActionBar.TabListener { …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-4.0-ice-cream-sandwich

96
推荐指数
5
解决办法
10万
查看次数

如何在操作栏下拉导航中设置活动项目?

我正在尝试通过重新启动方向更改的活动来解决问题.

我有一个ActionBar带有下拉列表导航,每次旋转后,该列表的第一个元素被激活.保持fragment内容并不困难,但我不知道如何设置活动列表项.

这是以下定义ActionBar:

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<CharSequence> list = ArrayAdapter
    .createFromResource(this, R.array.action_list, android.R.layout.simple_dropdown_item_1line);
list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActionBar().setListNavigationCallbacks(list, this);
Run Code Online (Sandbox Code Playgroud)

这是我的解决方法:

@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    if (!application.isRotated) {
        application.activePosition = itemPosition;
        application.activeId = itemId;
        getFragmentManager().beginTransaction()
            .replace(android.R.id.content, MyFragment.newInstance(itemPosition))
            .commit();
    } else {
        application.isRotated = false;
        this.onNavigationItemSelected(application.activePosition, application.activeId);            
    }
    return true;
}

@Override
protected void onStop() {
    super.onStop();
    application.isRotated = true;
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是最好的解决方案.

android android-spinner android-actionbar

41
推荐指数
1
解决办法
3万
查看次数