我有一个正在制作的应用,并有一个偏好设置活动,允许用户选择该应用的设置。
我需要帮助的是选择用户如何访问偏好活动。有些教程实际上在主要活动中有一个标记,例如"偏好"这将允许用户访问该活动。
其他人(我目前的方式)只依靠用户点击手机上的菜单按钮。我读到有些手机没有菜单按钮了,Android团队正试图摆脱物理导航按钮的要求。
所以我有点困惑,关于这个话题的一般共识是什么?谢谢。
编辑:这是我当前的菜单创建代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, 0, 0, "Settings");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
startActivity(new Intent(this, Preferences.class));
return true;
}
return false;
}
答案 0 :(得分:4)
使用“菜单按钮”方法。通常,在英语中,按钮应称为“设置”,而不是“首选项”,即使它管理首选项。傻,我知道。
关于没有菜单按钮的手机:
唯一不运行Android 4.0或更高版本的手机。只要您的项目中的目标Android 3.0或更高版本构建,并正确创建菜单项(如果您需要知道如何,我将提供一个片段),Android将检测到没有硬件菜单按钮并添加“溢出”菜单到Action Bar。
编辑:这是片段:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem buttonSettings = menu.add("Settings"); // This is a hardcoded string. When you get around to it, switch it to a localized String resource.
buttonSettings.setIcon(R.drawable.ic_settings); // I have a custom icon for this. You can use the one in android.R.drawable, but I don't know its name right now.
buttonSettings.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); // This forces it to go in the overflow menu, which is preferred.
buttonSettings.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Intent settingsIntent = new Intent(YourActivity.this, Preferences.class); // Change YourActivity to.. well, your activity. Change Preferences to the name of your Settings activity.
YourActivity.this.startActivity(settingsIntent);
return false; // I honestly don't know why this should return false, but every example I've seen has it do so. So I'd leave it in.
}
});
return true;
}
溢出菜单看起来像三个点,就像Action Bar的“more ...”选项一样。 Android设计指南说您应该始终将“设置”选项放在溢出菜单中。
希望清除它,其他任何东西,随意问。
答案 1 :(得分:1)
感谢大家的帮助,尤其是史蒂文,我学到了以下内容:
答案 2 :(得分:0)
我建议你两个都做(这就是我做的)。您在屏幕上显示设置virtual button
,单击该设置后,将弹出设置屏幕。您可以选择在单击physical button
时弹出设置屏幕。
答案 3 :(得分:0)
一些比我自己更聪明(也更美观)的人在Android设计指南中讨论settings。
我的通用UI设计原则是:
在实践中,我通常希望设置处于来自主页Activity的第一个溢出级别。