onPrepareOptionsMenu中的getSherlockActivity返回null

时间:2012-11-11 13:01:43

标签: android-fragments android-activity actionbarsherlock

我正在使用ActionBar Sherlock 4.2。当用户旋转设备时,我在onPrepareOptionsMenu方法中得到一个空引用。当从横向模式中的双碎片布局切换回到Protrait模式时会发生这种情况,后者仅显示没有细节碎片的“主”片段。但我的细节片段仍然被调用。首先,我在我的menu.xml中做错了,但事实并非如此。活动返回null。任何人都有提示可能有什么问题吗?

奇怪的是代码传递了isDetached()检查。

任何提示赞赏, Kitesurfer

/*
 * (non-Javadoc)
 * 
 * @see android.support.v4.app.Fragment#onPrepareOptionsMenu(android.support. v4.view.Menu)
 */
@Override
public void onPrepareOptionsMenu(final Menu menu)
{
    if (getListAdapter() == null || getListAdapter().isEmpty() && isDetached())
    {
        return;
    }


    final MenuItem item = menu.findItem(R.id.forecast_options_navigate_to_spot);
    Log.d(LOG_TAG, "Menu item size:" + menu.size());
    Log.d(LOG_TAG, "Activity:" + getSherlockActivity());

输出:

11-11 13:07:46.862: D/MyFragment(27997): Menu item size:8
11-11 13:07:46.862: D/MyFragment(27997): Activity:null

1 个答案:

答案 0 :(得分:0)

所以,我发现了什么是错的。在我的PagerAdapter中,我做了一些愚蠢的事。

在我的

public void onTabUnselected(final Tab tab, final FragmentTransaction nullTransaction)

我调用了getItem(),它创建了另一个Fragment,当然这个Frag在这个方法中被分离了。这会导致onPrepareOptionsMenu中的Activity为null。