我正在尝试从ListView项目导航到片段。 Fragment和ListView都是TabsAdapter的一部分。
我试过这个:
@Override
public void onListItemClick(ListView l, View v, int position, long id)
{
// Set up different intents based on the item clicked:
switch (position)
{
case 0:
Intent newActivity = new Intent(l.getContext(), Fragment_2.class);
startActivityForResult(newActivity, 0);
break;
}
}
和这个
case 0:
Intent newActivity = new Intent(getActivity(), Fragment_2.class);
startActivityForResult(newActivity, 0);
break;
在选择位置0上的项目后,两者都会导致我的应用程序在模拟器中关闭。
谢谢你, 基督教
答案 0 :(得分:1)
如果你想让你的新片段看起来像你的其他片段,我推荐这种方法:
Fragment newFragment = new MyNewFragmentClass();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.my_current_layout, newFragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
我自己也有同样的问题:New fragment in actionBar
答案 1 :(得分:0)
由于列表视图也是片段的一部分,您可以通过以下方式进行操作:
<强> 1 即可。收听项目单击片段中列表的监听器(我认为,您已经完成)。但是,不是简单地创建一个Activity,而是传递一个Bundle消息来传递Tab位置。
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
switch (position) {
case 0:
Intent newActivityIntent = new Intent(getActivity(), Fragment_2.class);
newActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
newActivityIntent.putExtra("tabToStart", "2"); //Pass the desired tab no.
startActivity(fragmentIntent);
break;
}
}
<强> 2 即可。在父活动的Oncreate()
方法中(包含片段1和片段2),您必须使用getIntent()
获取包邮件,并相应地更改标签位置。
Intent intLoc = getIntent();
String loc = intLoc.getStringExtra("tabToStart");
if (loc.equals("2")) {
mViewPager.setCurrentItem(2);
}
如果需要进一步的详细信息,请告诉我。