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

导航回嵌套片段中的视图分页片段

慕容康安
2023-03-14

我有一个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);

}

共有1个答案

仉宸
2023-03-14

您应该像这样重写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语言