我有一个显示列表的片段,在www.example.com列表的帮助下adapter.in,有一个链接单击,用户在其中调用另一个调用适配器的活动以获取数据。获取数据后,我们可以添加ata并保存在该适配器中,这将用户定向到片段1以保存数据。
.最初我不希望菜单保存在fragment1中。一旦用户在onclick列表中添加数据,打开另一个列表添加数据并返回fragment1,则我需要显示菜单保存.....我尝试过。
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.action_save, menu);
shareItem = menu.findItem(R.id.action_save1);
shareItem.setVisible(false);
}
后来基于我正在做的条件:shareItem.setVisible(true);
4条答案
按热度按时间iszxjhcz1#
当您开始另一个活动以获取结果时,您可以使用
startActivityForResult()
。获取数据后,您可以启用菜单。在这里您可以获得更多信息How to managestartActivityForResult
on Android?例如,当您开始活动时,将结果代码设置为示例1。然后在获取活动数据后,按如下方式完成第二个活动
在
onActivityResult
中,您可以检查结果是否正常,然后启用菜单。piv4azn72#
在活动
isShareItemVisible = true
中添加布尔变量作为字段,然后在条件改变时将其设置为false
并调用invalidateOptionsMenu();
。在onCreateOptionsMenu
方法中使用此变量,即:xytpbqjk3#
在您的片段中重写
onPrepareOptionsMenu()
并根据您的条件隐藏项目此外,请确保在
onCreate()
中调用setHasOptionsMenu(true);
来自文件
boolean onPrepareOptionsMenu (Menu menu)
准备要显示的屏幕标准选项菜单。每次显示菜单时,都会在菜单显示之前调用此方法。您可以使用此方法有效地启用/禁用项目或动态修改内容。jaql4c8m4#
在打开另一个列表之前,你可以设置一个布尔值为true,当你再次回到fragment1时,
setUserVisibleHint()
方法将被调用,你可以检查那个布尔值和isVisibleToUser
变量值,如果它们都为true,那么你可以看到菜单项。或者,如果您正在打开另一个Activity获取数据,您可以使用
startActivityForResult()
方法。当您将数据发送回Activity时,将调用onActivityResult()
。从这里您可以检查requestCode
和所有片段startActivityForResult()
方法。从这里您可以设置菜单项。