gpt4 book ai didi

java - 将菜单添加到 Activity 而不是 fragment

转载 作者:行者123 更新时间:2023-12-01 09:48:09 24 4
gpt4 key购买 nike

我有一个 MainActivity 和一个 fragment 。我有一个刷新菜单选项,可以刷新数据(使用AsyncTask)。在 fragment 中膨胀刷新菜单选项与在 MainActivity 中膨胀有什么区别吗?

注意:这是 Udacity 的开发 Android 应用程序第 2 课的上下文。

最佳答案

是的,如果我理解正确的话,您想从 fragment 中扩展您的 Activity 工具栏菜单。如果是这种情况,你可以这样做

Yout Fragment类

   @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setHasOptionsMenu is important
//it's telling the parent activity that he wants to participate in inflation of the menu
setHasOptionsMenu(true);
}



//Rest of your methods (onCreateView, onPause, onResume etc...)


@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//inflate the menu file
inflater.inflate(R.menu.your_menu_xml, menu);
super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(android.view.MenuItem item) {

switch (item.getItemId()) {

case R.id.refresh:
//handle click
return true;
}
return super.onOptionsItemSelected(item);
}

如果您想在某些子 fragment 中隐藏/显示菜单,也可以使用 setMenuVisibility(boolean)

如果您从 Activity 内扩充菜单,它将显示在您在 Activity 内加载的所有 fragment 中,但该操作仅对 activity 可用(如果您想要用菜单操作执行一些常规操作,例如启动新 Activity 、显示信息弹出窗口等)。如果您从 fragment 内扩充菜单,您将能够在 fragment 内处理菜单项,这将允许您根据当前 Activity 的 fragment 创建更具体的菜单操作。例如,如果您的 viewpager 具有 3 个不同的 fragment ,可以这样说:

  • 用于图像浏览的 FragmentOne
  • 用于视频浏览的 FragmentTwo
  • 用于文本浏览的 FragmentThre

假设您只想允许用户上传图像,并且您希望上传按钮位于菜单中。

如果您从 Activity 中膨胀菜单,您的上传按钮将在所有 fragment 中可见,并且您必须创建一个自定义/逻辑来显示隐藏菜单项。如果您从 fragment 中创建菜单,您将能够处理并显示所需 fragment 的菜单

长话短说,我认为这取决于 Activity/fragment 的用例以及您想用它实现的目标

关于java - 将菜单添加到 Activity 而不是 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com