相关疑难解决方法(0)

恢复状态时,android onCreateOptionsMenu调用了两次

这是我创建的一个简单的Android应用程序来演示我的问题:

public class OptionMenuTest extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("test", "create activity");
        setContentView(R.layout.options_layout);
        if(getFragmentManager().findFragmentByTag("frag") == null) {
            getFragmentManager().beginTransaction().add(R.id.option_fragment_container, new OptionMenuFragment(), "frag").commit(); 
        }

    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        Log.d("test", "saving Activity state");
        super.onSaveInstanceState(outState);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        Log.d("test", "create Activity options menu");
        menu.add("activity");
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

分段:

public class OptionMenuFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("test", "create fragment");
        setHasOptionsMenu(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments

7
推荐指数
1
解决办法
8067
查看次数

不调用onPrepareOptionsMenu

我无法onPrepareOptionsMenu()正常工作.无论我尝试什么,我都无法得到它.

我的应用程序的体系结构如下:我的主Activity包含一个包含ViewPager的Fragment,而ViewPager又有四个子Fragment实例.目前,我(已成功)填充Activity with中的初始选项菜单onCreateOptionsMenu(),但我希望添加一些与每个活动子Fragment相对应的额外选项.

在我的孩子片段中,我已经确定setHasOptionsMenu(true)正在调用它onCreate()并且getSherlockActivity().supportInvalidateOptionsMenu()被调用onActivityCreated().在主Activity中,onCreateOptionsMenu()在实例化子Fragment之后调用一次,无论它们是否包含supportInvalidateOptionsMenu().随后在寻呼机中的片段被替换时再次调用它.

我已经尝试将onPrepareOptionsMenu()代码向上移动到父片段和主要活动 - 无济于事,这表明问题与我使用嵌套片段无关.我也尝试将onCreateOptionsMenu()方法从主Activity移动到两个片段,在那里它不被调用.

如果有人知道这里发生了什么,我会非常感激,因为我已经被困在这两天了.

更新 - 我已经确切地解决了现在的问题,只是我仍然不确定如何解决它.我正在测试4.2,它似乎在Activity 中onCreateOptionsMenu()被调用onResume()- 如在JB 4.2上的onResume之后调用的onCreateOptionsMenu中所示.我认为这意味着片段无法调用,onPrepareOptionsMenu()因为菜单在实例化后才会存在.那么我该如何解决这个问题呢?

android android-optionsmenu android-viewpager actionbarsherlock

7
推荐指数
1
解决办法
2585
查看次数