这是我的问题,我确信它是一个基本问题。自从我编程以来已经超过两年了,请耐心等待。
我在MainActivity
课程中创建了一个操作栏。在我的onOptionsItemsSelected
(主菜单)方法中,我有一个switch语句,它告诉MainActivity根据可用操作项的用户输入启动哪个活动。我感兴趣的是,当用户选择选择时,Action Bar
在所有活动中保持一致的行为。菜单项保持不变,我希望onOptionsItemsSelected
在所有活动中都相同。我可以复制并粘贴MainActivity中的代码,但我知道这不是“正确”的方法。
例如: 在MainActivity操作栏中,选项A,B,C。当用户选择时,活动A,B或C开始。
如果用户选择A,则A启动。我希望用户能够使用操作栏启动B,C或主屏幕。
我知道这有一个基本的解决方案,但自从我编码以来已经有一段时间了。所有的帮助都是相关的。由于我的问题简单,请随意嗤之以鼻:)
答案 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);
}
}