我正在开发一个应用程序,其中有 fragment “A”和 fragment “B”, fragment “A”中有一个抽屉导航。当我切换到 fragment “B”时我想要什么我想要抽屉导航图标变为后退图标。请告诉我该怎么做。
最佳答案
首先:在您的 Activity (持有工具栏和主页按钮的 Activity )中,您需要创建一个 bool 变量(一个标志)来标记主页按钮是三明治菜单还是后退箭头。
public class TheActivity {
private boolean backButtonEnabled = false; //starting with the menu icon
...
}
第二:在您的 Activity(持有工具栏和主页按钮的 Activity )中,您需要创建一个方法 enableBackButton(boolean enable)
来将工具栏更改为主页如果启用为真,则向后箭头添加图标;如果启用为假,则为三明治菜单,并设置相应的 bool 标志。
public class TheActivity {
...
public void enableBackButton(boolean enable) {
this.backButtonEnabled = enable;
if(enable) {
toolbar.setNavigationIcon(backIcon);
} else {
toolbar.setNavigationIcon(sandwichIcon);
}
}
}
第三:在 fragment B(如果可能的话,在其他 fragment 中)你应该在到达 时调用
和 getActivity().enableBackButton(true/false)
onCreateView()onDestroyView()
。此时,如果您运行该应用,您将能够更改 fragment 并看到主页按钮在没有操作集的情况下发生变化。
public class FragmentB {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
((TheActivity)getActivity().enableBackButton(true);
...
}
@Override
public void onDestroyView() {
((TheActivity)getActivity().enableBackButton(false);
super.onDestroyView();
}
}
最后:您需要根据您在按钮时设置的标志 backButtonEnabled
处理 onOptionsItemSelected(MenuItem item)
中的主页按钮点击改变了。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home: {
if(backButtonEnabled) actionBack(); //desired back action
else actionSandwich(); //open drawer
break;
}
}
return super.onOptionsItemSelected(item);
}
希望这对您有所帮助并对您的应用有所帮助! 问候!
关于android - 如何在 android 中的 fragment 更改时更改主页按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342445/