当前位置: 首页 > 知识库问答 >
问题:

Android:根据视页中的每个片段更新ActionBar项目?

戚宏浚
2023-03-14

我有一个标志/书签按钮在行动栏,我想切换或关闭,取决于哪个片段是在视图页的视图。

如果用户在ViewPager中标记了一个片段,则该片段将被设置为Enabled。当用户滑到下一个,我希望动作栏按钮更新为未标记。现在,我可以通过有两个菜单项来改变按钮的状态,并隐藏一个,单击时显示一个。

public boolean onOptionsItemSelected(MenuItem item) {
    int currentItem = mPager.getCurrentItem();
    switch (item.getItemId()) {
    case R.id.menu_flag:
        mFlagged = true;
        supportInvalidateOptionsMenu();
        return true;
    case R.id.menu_unflag:
        mFlagged = false;
        supportInvalidateOptionsMenu();
        return true;
    }
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem item_flag = menu.findItem(R.id.menu_flag);
    MenuItem item_unflag = menu.findItem(R.id.menu_unflag);
    if (mFlagged) {
        //If flagged
        //Show flagged item
        item_flag.setVisible(false).setEnabled(false);
        item_unflag.setVisible(true).setEnabled(true);
        item_flag.isVisible();
    } else {
        //If not flagged
        //Show unflagged icon
        item_flag.setVisible(true).setEnabled(true);
        item_unflag.setVisible(false).setEnabled(false);
    }

    return super.onPrepareOptionsMenu(menu);
}

我怎么能这么做?我应该在哪个级别访问操作栏;活动、PagerAdapter还是片段?

共有1个答案

燕英逸
2023-03-14

在您的viewpager上注册viewpager.onpagechangelistener应该可以做到这一点。然后,重写onpageselected(int pageNum),以便在页更改时接收回调。

public void onPageSelected(int pageNum) {
     supportInvalidateOptionsMenu();
}
 类似资料:
  • 我试着在发帖前在里面搜索,但我不能理解如何刷新片段中托管的ViewPager的内容。你能帮帮我吗? 谢谢你抽出时间 } 这是pageviewer中的imageview的类

  • 当我从片段B回到片段A时,actionbar标题应该是“fraga”,但它仍然是“fragb”。问题是add方法片段A没有重新创建,我没有找到事件来刷新它。 目前我找到的唯一简单的解决方案是: 1-fragb.onResume:保存上一个操作栏标题

  • "'公共类HomeFraank扩展了片段{ } ''' 碎片_home已创建但未被识别。

  • 我正在做一个计算器应用程序,想要更新历史在第二个片段,但不能找到一个完美的解决方案更新列表视图在第二个片段。我试过很多种解决办法,但没有一种有效。我正在使用ViewPager在计算器和历史片段之间滑动。我厌倦了bundle类,但如果我在ViewPager的第一个片段(CalculatorFragment)的OnCreat方法中使用bundle,它在启动应用程序后会显示空白屏幕&如果我在Equal按

  • 我已经创建了一个应用程序的布局有三个标签在Android2.3。每个选项卡都有一个片段,在每个片段中,都有一个列表视图。在列表视图中显示的所有数据都来自互联网,数据总是在变化,所以每次我看那个片段的时候都想重新加载数据。例如,我现在正在观看“tab1”,当我单击“tab2”时,“tab2”中的数据将重新加载,而当我单击返回“tab1”时,“tab1”中的数据也将再次重新加载。我试过了 TabSAd

  • 我正在实现Android的标准抽屉菜单模式,用户可以从抽屉导航到大约10个片段。目前,每次点击不同的抽屉菜单项时,我都会创建一个新的片段,如下所示: 我一直在想,这样做是否更有效: 我主要担心的是,一些片段包含大量数据(相当大的列表和大量的视图)。将所有这些片段保存在内存中会有任何问题吗?与每次实例化新片段相比,它会提供任何优势吗(除了片段之间更快的切换)?是否有一个普遍接受的“更好”解决方案?