如何在不同的活动中保持操作栏按钮的点击一致。 (机器人)

时间:2013-01-10 06:25:44

标签: android android-actionbar

这是我的问题,我确信它是一个基本问题。自从我编程以来已经超过两年了,请耐心等待。

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

例如: 在MainActivity操作栏中,选项A,B,C。当用户选择时,活动A,B或C开始。

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

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

1 个答案:

答案 0 :(得分:0)

我找到答案,归结为基本编程。如果这个问题足够清楚,请告诉我。

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

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

如果要保持操作栏在每个不同视图中保持一致,则在调用OnOptionsItemsSelected()时在每个活动中,您有从该选项获取id的方法,然后使用super.OnOptionsItemsSelected返回它(项目)。为了使其工作,用户应该让调用类扩展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);   
    }

}