我有一个ViewPagerContainer片段,在应用程序启动时加载。ViewPagerContainer片段将两个选项卡(选项卡A和选项卡B)添加到操作栏。选项卡B有两个项目的列表视图。
我所做的:我在选项卡B片段中的列表视图项上附加了一个click listener,这样当用户单击一个项时,它会在第一个片段(即选项卡B下)内打开另一个片段(子片段)。
我陷入困境的地方:当用户按下后退按钮时,我想回到选项卡B。我试图通过将子片段添加到backstack来实现这一点,但不幸的是,它没有返回到tab B片段。请帮我解决这个问题,我对此做了很多研究,包括实施backbackback hacks,但没有成功。
我使用v4和v7 appcompat库。
任何帮助都将不胜感激。提前谢谢。
编辑:我设法从子片段导航回actionbar选项卡。我通过以下代码实现了这一点:
//使用getChildFragmentManager()代替getSupportFragmentManager()FragmentManager fm=getChildFragmentManager();
MyFragmentPagerAdapter fragAdapter=新的MyFragmentPagerAdapter(fm);
ager.set适配器;
然而,在背面导航中,标签的数量翻了一番,其中只有两个是可点击的,我可以看到它们的内容。当我再次点击第二个选项卡上的listItem,然后导航回来时,又增加了两个选项卡,它一直在继续。我该怎么解决这个问题?这是密码
选项卡B片段:公共类FindStylist扩展ListFragment{
String[] selectCat = {
"category A",
"Category B"
};
private ListView listView;
String mTime;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
ArrayAdapter myAdapter=新的ArrayAdapter(inflater.getContext(),android。R.布局。简单列表项目1,选择CAT){
public View getView(int position, View convertView, ViewGroup parent){
View view = super.getView(position, convertView, parent);
TextView tv = (TextView) view.findViewById(android.R.id.text1);
tv.setTextColor(Color.BLACK);
tv.setGravity(Gravity.CENTER);
return view;
//listView = view.getListView();
}
};
setListAdapter(myAdapter);
返回超级。onCreateView(充气机、容器、savedInstanceState);
}
已创建公用void onviewCreate(视图、捆绑存储状态){
listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
if(position == 0){
//best clicked
Toast.makeText(getActivity(), " catA clicked " + position, 5).show();
}else if(position == 1){
//nearest clicked
Toast.makeText(getActivity(), "CatB clicked " + position, 5).show();
FragmentNearest fragment = new FragmentNearest();
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.mainContent, fragment)
.addToBackStack(null)
.commit();
}
}
});
}
}
B的子片段:
公共类Fragment最近扩展ListFra缔约国{
String[] selectLocation = {"From Current Location", "Choose a Location"};
私有列表视图列表视图;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
ArrayAdapter myAdapter=new ArrayAdapter(inflater.getContext()), android.simple_list_item_1,选择位置){
public View getView(int position, View convertView, ViewGroup parent){
View view = super.getView(position, convertView, parent);
TextView tv = (TextView) view.findViewById(android.R.id.text1);
tv.setTextColor(Color.BLACK);
tv.setGravity(Gravity.CENTER);
return view;
}
};
setListAdapter(myAdapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
您应该像这样重写activity类中的onBackPressed方法。
@Override
public void onBackPressed()
{
if (iCanBackToFragment)
{
popBackStackOrWhateverYouUseToBack()
}
else
{
super.onBackPressed();
}
}
问题 我想在一个活动中创建带有2个片段的viewpager。这个片段有不同的菜单选项,并且一个片段是嵌套的-通过单击listview项目,打开带有新数据的相同片段(),但是viewpager不能正确替换(当我这样做时。 我用了这个答案——https://stackoverflow.com/a/18020219/5576117,,但是我有不同的菜单选项,而且菜单选项是从片段容器中膨胀出来的。 因此,
我正在编写一个应用程序,它有一个导航抽屉,并且使用嵌套片段。导航抽屉几乎是按照Android文档创建的——它可以工作。我希望导航抽屉始终可见,这就是为什么我有一个活动,我只是交换片段。其中一个片段是ViewPager,它又有自己的片段作为页面。 导航是这样分层的: 其中片段是,子片段是它的页面。当我刚从抽屉转到时,所有内容都正常工作,但我不知道如何直接切换到给定页面(嵌套片段)。 处理导航抽屉点击
我的应用程序有两个项目的导航抽屉:一个ViewPager(在一个片段内)和支持Map碎片。 ViewPager使用FragmentStatePagerAdapter并返回两个片段。 当我打开抽屉菜单并选择“项目1”(支持MapFrature)时,另一个碎片(ViewPager在其中)执行,但此方法不会破坏适配器创建的碎片,所以当我再次选择“项目0”时,我的应用程序创建的ViewPager与它的两个
我实现了一个bottomNavigationView,其中每个选项都有其条目片段,有些选项在同一个选项下有更多的导航。 某种程度上是这样的: A- B类- C类- D- E类- 其中A, B, C, D 所需的导航是,应用程序的入口和出口点始终是选项A(入口片段A1)。因此,如果用户导航到另一个选项,只要该选项位于该选项的条目片段中,任何反向导航的行为都应该转到选项A。 我遇到的问题是,botto
首先,我想说的是,我对android开发和gradle都是新手。不适用于java。我有一个支持2.3.6的项目,现在正在使用支持库将其迁移到4.4。我也在使用Gradle,到目前为止,它工作得很好。 我现在使用导航抽屉在应用程序片段之间导航,这些片段过去是活动。抽屉中的一个片段包含列表中某个项目的listview和detail视图。当用户单击列表中的项目并显示其详细信息时,抽屉片段切换其视图。 虽
我正在尝试实现BottomNavigationView,到目前为止很成功。目前正在尝试实现片段到片段的移动,这也很成功,但不知何故,当我从一个片段[广播]移动到另一个[流]时,导航栏应该突出显示图标[流],但它没有发生我可以通过片段本身设置突出显示属性吗?下面是我的应用程序的代码和快照: 主要活动。Java语言 放射性碎片。Java语言 StreamFragment。Java语言