我有个罕见的问题。我有一个动态填充选项卡的活动(多达20个选项卡)。每个片段都有oncreateOptionsMenu
的实现和一个菜单,其中包含一个书签图标,当按下时会改变颜色。有一个menu
类型的类变量menu
,它是在调用fragment的oncreateoptionsmenu
时设置的。这是为了使我能够在oncreateOptionsMenu
之外设置书签菜单项(这也是动态完成的)。
问题:当父活动只有一个选项卡(一个片段实例)时,这个实现工作得很好。但是,使用多个选项卡时,应用程序会出现错误:尝试调用接口方法Android.view.menuitem Android.view.menu.finditem(int)
Menu menu;
...
...
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setMenuBookmark(ques_obj);
}
private void setMenuBookmark(QuestionAnswerList ques_obj){
MenuItem menuBookmark = this.menu.findItem(R.id.action_bookmark);
if (ques_obj.getIs_bookmarked().equals("1")) {
menuBookmark.setIcon(R.drawable.ic_bookmark_white_24dp);
} else {
menuBookmark.setIcon(R.drawable.ic_bookmark_border_white_24dp);
}
}
...
...
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.cbt_fragment_menu, menu);
this.menu = menu;
super.onCreateOptionsMenu(menu, inflater);
}
试试这条路
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getActivity().invalidateOptionsMenu()
}
}, 500 );
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.cbt_fragment_menu, menu);
MenuItem menuBookmark = menu.findItem(R.id.action_bookmark)
if (ques_obj.getIs_bookmarked().equals("1")) {
menuBookmark.setIcon(R.drawable.ic_bookmark_white_24dp);
} else {
menuBookmark.setIcon(R.drawable.ic_bookmark_border_white_24dp);
}
return true;
}
我正在使用开发一个应用程序。 这是我的活动: 我使用的FragmentStatePagerAdapter如下所示: }
我有一个有4个选项卡的ViewPager片段,在第4个选项卡中有另一个有3个选项卡的ViewPager,这样,如果每当我切换我的topviewPagerTab(一个有4个选项卡)时,就不会调用sub ViewPager(有3个选项卡)中的setUserVisiblehint片段。
我制作了一个应用程序,在其中我显示了一个谷歌地图,在我的位置上有GPS定位标记。这张地图在第一个选项卡上,我还有两个其他选项卡,如下图所示 现在我面临一个问题,即当我从选项卡1移动到选项卡2,然后移动到选项卡1时,它工作得很好,但当我移动到选项卡3,然后再移回选项卡1或选项卡2时,应用程序崩溃,并在LogCat中出现以下异常: 它在以下点显示错误: 无论我选择任何选项卡,它都会在上面一行显示错误,
所以我有一个用于片段的容器,称为“容器”,它是一个FrameLayout。 在这个容器中,我使用名为CollectionsFragment的视页放置了一个片段。 null 我正在使用一个FragmentStatePagerAdapter,并将CollectionsFragment的getChildFragmentManager()传递给适配器。 我还有一个用于活动容器的onBackstackCha
我刚开始使用Material Design的ViewPager和Tablayout(自带Android Studio)。我创造了5个碎片,我能够使用一个刷卡他们的需要。 根据用户在Fragment2中的选择,我想删除Fragment3。但是,从表列中移除选项卡后,当滑动到第三个选项卡(在移除第三个选项卡之前是第四个选项卡)时,会显示错误的片段--系统将第三个片段存储在内存中并显示它。如果我销毁了该
我有一个有3个选项卡的ViewPager。根据我所看到的情况,当容器活动开始时,前两个片段将处于恢复状态。我还注意到,只有并排的两个片段被恢复,第三个被停止。我遇到的问题是,我从网络加载数据用于第一个片段,并将自定义对象存储在一个ArrayList中,这很正常,但当我导航到第三个片段时,数据会随着第一个片段进入停止状态而丢失。因此,当从第三个片段导航回第一个片段时,ArrayList就会为空(我在