1

这是我的问题,我敢肯定这是一个基本问题。请耐心等待,因为我已经编程了 2 年多了。

我在MainActivity课堂上创建了一个操作栏。在我的onOptionsItemsSelected(主菜单)方法中,我有一个 switch 语句,它根据可用操作项的用户输入告诉 MainActivity 要启动哪个活动。当用户选择一个选项时,我有兴趣在Action Bar所有活动中保持一致的行为。菜单项保持不变,我希望onOptionsItemsSelected所有活动都相同。我可以从 MainActivity 复制并粘贴代码,但我知道这不是“正确”的做法。

例如:在 MainActivity 操作栏中给出选项 A、B、C。活动 A、B 或 C 在用户选择时启动。

如果用户选择 A,则 A 启动。我希望用户能够使用操作栏启动 B、C 或主屏幕。

我知道这有一个基本的解决方案,但是自从我编码以来已经有一段时间了。所有的帮助都是值得的。由于我的问题很简单,请随意恶作剧:)

4

1 回答 1

0

我找到了答案,它归结为基本编程。请让我知道这是否足够清楚。

所以有一些关于Android编程格式的知识。从 MainActivity() 开始,它启动时按顺序调用两个函数:

OnCreateOptionsMenu(Item item) 调用要放入菜单/操作栏中的值。OnOptionsItemsSelected(Item item) 告诉应用程序如何处理选择。

如果您想在每个不同的视图中保持操作栏一致,则在每个活动中,当您调用 OnOptionsItemsSelected() 时,您可以使用从选项中获取 id 的方法,然后使用 super.OnOptionsItemsSelected(item) 将其返回。为了让它工作,用户应该让调用类扩展 MainActivity 而不是 Activity。以下是代码示例:

这是第二个活动的代码,它希望保持与 MainActivity 相同的行为操作栏(具有相同的选择)。注意:如果您不扩展 MainActivity,它将无法工作,因为它将调用 Activity 类的方法,而不是您的 MainActivity。

public class secondActivity extends MainActivity{

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondActivity);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        item.getItemId();
    return super.onOptionsItemSelected(item);   
    }

}
于 2013-01-14T19:28:29.693 回答