我的应用程序是这样工作的:有一个带有不同按钮(“Category 1”、“Category 2”等)的菜单,所有这些按钮都打开了同一个名为“ResultListViewActivity”的活动,它显示了一个包含数据库内容的 ListView,取决于您之前单击的按钮。
因此,有一个活动显示了一个内容不同的列表视图。我正在尝试为此列表视图添加“过滤模式”。我有一个“过滤器按钮”打开一个警报对话框窗口,这个警报对话框里面有一个微调器。我正在研究一种在此微调器中显示不同内容的方法,然后为每个项目分配不同的侦听器。例如,如果在主菜单上单击“Category 1”按钮,它会将变量“filterVariable”设置为值 1,如果单击“Category 2”,它将设置为值 2,依此类推。
我用 switch 属性编写了这个,但它使我的应用程序因指针空异常而崩溃。这是我的代码:
OnClickListener filter_listener = new OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater li = LayoutInflater.from(context);
View dialogView = li.inflate(R.layout.alertdialog_filter, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
Bundle bundle = getIntent().getExtras();
int filterVariable = bundle.getInt("filterVariable");
switch (filterVariable) {
// if you click on button "category 1" in main menu
case 1:
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(ResultListViewActivity.this, R.array.spinner_category1, R.id.alertdialog_spinner);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
break;
// if you click on button "category 2" in main menu
case 12:
ArrayAdapter<?> adapter1 = ArrayAdapter.createFromResource(ResultListViewActivity.this, R.array.spinner_category2, R.id.alertdialog_spinner);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter1);
break;
}
alertDialogBuilder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialogBuilder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Lorsque l'on cliquera sur annuler on quittera
// l'application
finish();
}
});
// set alertdialog_filter.xml to alertdialog builder
alertDialogBuilder.setView(dialogView);
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
}; }
这真的让我发疯,我已经设法在弹出菜单的情况下做到了(我的代码在这里供那些可能感兴趣的人使用:如何为不同的弹出菜单设置特定的侦听器?(内部代码))但现在不是弹出菜单不再是微调器,一切都不同了,我为弹出菜单所做的一切都没用。