从另一个片段中打开片段

时间:2016-12-27 00:57:05

标签: android android-fragments

我在片段内部工作,其中包含 ListView 。当用户单击列表行时,我想打开另一个应该显示另一个ListView的片段。

这是我现在的方法:

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String topic = String.valueOf(parent.getItemAtPosition(position));

        Log.d("Comunidad",topic);
        //PASA VALOR SELECCIONADO AL SIGUIENTE FRAGMENT
    }
});

从此方法中打开新片段的最佳方法是什么?

谢谢。

4 个答案:

答案 0 :(得分:2)

在首选活动的布局中添加FrameLayout以调用FragmentA(要点击的片段):

<FrameLayout
     android:layout_width="match_parent"
     android:id="@+id/outer_frame"
     android:layout_height="wrap_content">
</FrameLayout>

然后通过执行以下操作将您的FragmentA替换为outer_frame(FrameLayout):

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String topic = String.valueOf(parent.getItemAtPosition(position));

          Log.d("Comunidad",topic);
          getSupportFragmentManager().beginTransaction()
              .replace(R.id.outer_frame, new FragmentA())
              .commit();

        }
    });

答案 1 :(得分:1)

在listview的onClick里面

Fragment2 new_frag = new Fragment2();
return new_frag;

答案 2 :(得分:1)

       // Inside your onClick method
        FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.container, new MyFragment());
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();

答案 3 :(得分:0)

我可能错了,但我认为你想要做的事情是不可能的,因为片段不打算在已经打开的活动中打开...... 你可以做的是用片段准备活动,然后在你想要的时候改变它的内容...... 可能是错的...