在我的Android应用程序开始时,用户需要从备选列表中进行选择。这就是原因。
假设我有很长的项目列表,每个项目只属于一个类别。每个用户只对一个特定类别感兴趣。因此,当应用程序启动并且SharedPreferences不包含有关所选类别的任何信息时,应显示模式对话框 - 此处用户必须选择他或她感兴趣的类别。选择一个类别后,只显示该类别的项目。
到目前为止,我试图在Activity的onCreate()方法中实现这种行为,这显然不起作用。对话框未显示或至少不够长,以便我可以看到它。
说实话,我没想到代码可以从onCreate()
调用它。但是,我无法在Activity
中找到合适的事件处理程序,从那里我可以触发对话框。
应该从哪里触发此对话框以确保选择类别(在加载任何其他数据之前)?
提前致谢。
以下是代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
setContentView(R.layout.activity_item_list);
...
ensureCategorySelected();
}
相关方法
private void ensureCategorySelected() {
String chosenCategory = getCategoryFromSharedPreferences();
if (chosenCategory != null) {
final CharSequence[] items = getCategories();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose category");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
// handle the selection of the category
}
});
AlertDialog alert = builder.show();
}
}
答案 0 :(得分:2)
那里有一个逻辑问题。您希望在仍未保存首选项时显示对话框,并在保存首选项时显示该对话框。将其更改为chosenCategory == null
,它应该可以正常工作。
为什么你不希望代码在onCreate()
中运行?我没有看到在那里打开对话框的问题。
编辑:我不太确定onCreate()是否是显示对话框的正确位置。尝试将ensureCategorySelected()
放在onStart()而不是onCreate()。
您还可以考虑为此实施一项活动,您可以从startActivityForResult()
开始。