【问题标题】:getSherlockActivity in onPrepareOptionsMenu return nullonPrepareOptionsMenu 中的 getSherlockActivity 返回 null
【发布时间】:2012-11-11 13:01:43
【问题描述】:

我正在使用 ActionBar Sherlock 4.2。当用户旋转设备时,我的 onPrepareOptionsMenu 方法中出现空引用。当从横向模式下的双片段布局切换回纵向模式时会发生这种情况,该模式仅显示“主”片段而没有细节片段。但是我的细节片段仍然被调用。首先,我在 menu.xml 中做错了什么,但事实并非如此。 Activity 返回为空。任何人都知道那里可能有什么问题吗?

奇怪的是代码通过了isDetached()检查。

任何提示表示赞赏, 风筝冲浪者

/*
 * (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

【问题讨论】:

  • 目前我通过检查活动 == null 来解决这个问题。相当愚蠢的解决方案,但到目前为止有效。我检查了我的 FragmentPagerAdapter,因为我可能会发现某些东西没有分离,但是代码在 onPrepareOptionsMenu 方法之后被调用。

标签: android-fragments android-activity actionbarsherlock


【解决方案1】:

所以,我发现了问题所在。在我的 PagerAdapter 中,我做了一些愚蠢的事情。

在我的

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    相关资源
    最近更新 更多