Java 在片段上实现向上导航
我有一个包含片段a的主要活动。当我单击FragmentA时,会发生以下情况:Java 在片段上实现向上导航,java,android,android-fragments,android-studio,Java,Android,Android Fragments,Android Studio,我有一个包含片段a的主要活动。当我单击FragmentA时,会发生以下情况: getFragmentManager().beginTransaction().replace(R.id.container,new PrefFragment()).addToBackStack("back").commit(); 我的舱单上有: <activity> <meta-data android:name="android.support.PARENT_AC
getFragmentManager().beginTransaction().replace(R.id.container,new PrefFragment()).addToBackStack("back").commit();
我的舱单上有:
<activity>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
但“向上”按钮导航始终可见
FragmentB包含以下代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id=item.getItemId();
switch (id)
{
case android.R.id.home:
getFragmentManager().popBackStack();
Toast.makeText(getActivity(),"CLick",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
此代码不运行。
我只需要在FragmentB中实现向上导航。我该怎么做?据我所知,上行导航必须仅在FragmentB中工作,而如果显示FragmentA,上行导航将被隐藏。如果是,则在活动中,删除
getActionBar()。setDisplayHomeAsUpEnabled(true)代码>来自onCreate
此外,处理菜单单击时必须返回true,并将onOptions ItemSelected(MenuItem)移动到活动,因为android.R.id.home菜单单击仅传递到活动
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
getFragmentManager().popBackStack();
Toast.makeText(getActivity(),"CLick",Toast.LENGTH_SHORT).show();
return true; //Notice you must returning true here
default:
return super.onOptionsItemSelected(item);
}
}
支离破碎
@Override
public void onAttach(Activity a) {
super.onAttach(a);
a.getActionBar().setDisplayHomeAsUpEnabled(false);
}
零碎的
@Override
public void onAttach(Activity a) {
super.onAttach(a);
a.getActionBar().setDisplayHomeAsUpEnabled(true);
}
该片段中操作栏的getInstance和setDisplayHomeAsUpEnabled to falseOk现在仅在FragmentB中显示,但不显示toast,当我单击Up时,也不返回FragmentAButton@user1608228我想如果显示碎片B,你需要去碎片A。如果显示片段A,则表示您不想进行导航,或者是这样?然后问题对我来说不清楚。是的,我需要转到FragmentA如果显示FragmentB,现在向上按钮是确定的,但是当我单击nothing时happens@user1608228我懂了。原因是片段没有它的菜单,所以不会调用onOptions ItemSelected。将onOptions ItemSelected
代码移动到活动
。
@Override
public void onAttach(Activity a) {
super.onAttach(a);
a.getActionBar().setDisplayHomeAsUpEnabled(true);
}