我在片段内部工作,其中包含 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
}
});
从此方法中打开新片段的最佳方法是什么?
谢谢。
答案 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)
我可能错了,但我认为你想要做的事情是不可能的,因为片段不打算在已经打开的活动中打开...... 你可以做的是用片段准备活动,然后在你想要的时候改变它的内容...... 可能是错的...