android - 如何在其他类中从 MainActivity 调用(和使用)onOptionsItemSelected

标签 android android-intent android-actionbar android-optionsmenu

我正在制作我的第一个 Android 应用程序,但我遇到了一个问题。 我有超过 8 个不同的类,它们都使用相同的操作栏。 现在我想在我的其他类中调用主类的方法,而不是在每个不同的类中调用方法(并且有很多双重代码)。

这是我在 main.java 中的 onOptionsItemSelected 代码的一部分

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
        case R.id.actionbar_new_income:
            Intent newIncome = new Intent(this, NewIncome.class);
            this.startActivity(newIncome);
            return true;
} 
}

现在我想知道如何在另一个类 (newIncome.java) 中调用该方法 到目前为止我有这个,但它一直说我需要添加参数。我当然需要能够检测到单击了哪个菜单项..

MainActivity main = new MainActivity();
        main.onOptionsItemSelected();

有什么帮助吗? 谢谢!

最佳答案

你不应该这样做。如果您有通用代码,则将其放在一个类(而不是 Activity )中,任何需要它的 Activity 都可以访问该类。

你仍然会有一些重复,但这是正常的。

减少 Activity 启动代码的一个好方法是为每个 Activity 添加一个静态方法,您可以调用该方法来启动它所在的 Activity 。

例如,在您的 NewIncome Activity 中您可以拥有

Public static void Launch(Context c) {
    Intent newIncome = new Intent(c, NewIncome.class);
    C.startActivity(newIncome);  
}

然后您可以通过调用从任何其他 Activity 启动此 Activity

NewIncome.Launch(this);

如果需要,您可以向方法添加参数,然后使用这些参数将 Extras 添加到 Activity。

关于android - 如何在其他类中从 MainActivity 调用(和使用)onOptionsItemSelected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344767/

相关文章:

java - 如何在actionBar菜单中强制显示3个点?

java - xml 布局不适合我

java - developer.android.com 上的 editText.setOnEditorActionListener 错误

android - 如何修复appcompat gradle错误? Android 3.4

android - 远程完成 Android Activity

android - Intent 获取已卸载应用程序的 UID

Android:通过 body Intent 发送短信并返回。

Android - 如何检测拨出电话是否已接听或已接听?

android - ActionBarSherlock - 删除 Action View 中的应用程序图标(以及其他样式问题)

android - 如何在android中制作自定义拆分(底部)菜单