android - 如何在片段的 onOptionsItemSelected 中调用自定义类
问题描述
如何在 onOptionsItemSelected 方法中调用自定义类。我有片段,有些片段有不同的操作栏项目。我不想item.getItemId()
一遍又一遍地编写相同的代码。我写了一个关于操作栏选定项目的类。它不起作用。如何调用自定义类和方法?
public class ActionMenuItemSelected {
public Fragment actionMenuSelectedItem(MenuItem item) {
Fragment selected_fragment = null;
FirebaseAuth mAuth = FirebaseAuth.getInstance();
switch (item.getItemId()) {
case R.id.action_menu_Resmece:
selected_fragment = new MainFragment();
break;
case R.id.action_menu_account:
selected_fragment = new AccountFragment();
break;
case R.id.action_level_about_us:
selected_fragment = new AboutUsFragment();
break;
case R.id.action_level_contact_us:
selected_fragment = new ContactUsFragment();
break;
case R.id.action_menu_log_out:
mAuth.signOut();
selected_fragment = new RegisterFragment();
Toast.makeText(getApplicationContext(), "Logged out", Toast.LENGTH_SHORT).show();
break;
}
return selected_fragment;
}
//region goToFragment
public void goToFragment(Fragment selectFragment) {
AppCompatActivity activity = (AppCompatActivity) getContext();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.main_frame, selectFragment).addToBackStack(null).commit();
}
//endregion
}
我添加了一个类名 ActionMenuItemSelected 并且我想在片段的 onOptionsItemSelected 方法中调用此方法。我做不到。你能帮我调用这个方法吗?
解决方案
在您的活动中,您需要充气菜单布局
//Add this method to your activity
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu); // Inflate your menu
return true;
}
设置菜单布局后,您可以调用自定义类
private final ActionMenuItemSelected amis = new ActionMenuItemSelected();
public boolean onOptionsItemSelected(MenuItem item) {
Fragment frag = amis.actionMenuSelectedItem(item);
goToFragment(frag); // assuming that this method is in your class Activity
return true;
}
但是,如果在您的应用程序中只有一个 Activity 具有此菜单设置,您可以将所有ActionMenuItemSelected.actionMenuSelectedItem
逻辑放入您的onOptionsItemSelected(Menu item)
方法中。
setHasOptionsMenu(true);
如果您在 Fragment 中,请不要忘记调用onCreate() 方法
推荐阅读
- sql - 使用 hive 获取 Avg、p50、p95 和 p99
- git - 排除特定文件夹后如何在 Git 中查看 2 个标签之间的提交历史记录
- reactjs - 使用 Material-UI 构建整个网站的前端
- python - 如何为 Selenium/Python 创建一个文本文件以在没有额外字符问题的情况下读取
- java - 由于配置无效,Firebase 安装无法与 Firebase 服务器 API 通信
- android - 我正在尝试通过 Google Places 在 Google Maps 上实现搜索。但是谷歌搜索出现了
- reactjs - 从 React 组件生成 pdf 作为电子邮件附件
- r - 为什么 dplyr 无法聚合我的数据?
- ios - 将 CocoaPods 添加到 watchOS 目标
- lua - 尝试在 Lua 中对字段“x”(表值)执行算术 - 不确定如何解决