我的代码应该显示一个带有字符串列表的警报对话框。一旦用户选择了一个,我需要使用该字符串。
我在调用getTagSelectionFromDialogBox()的主要活动中有函数handleIt()。有 public String selectedTitle 和 public integer title_position。
我看到一个问题,从 handleIt() 调用 getTagSelectionFromDialogBox() 之后,我调用 Toast 来打印 selectedTitle。
我在这里看到的问题是警报对话框和 Toast 都在执行,并且 Toast 显示 null(因为它被初始化为 null)而不是 Toast 等待 getTagSelectionFromDialogBox() 完成。这是我的代码
我需要一些机制来等到 alert 得到结果和(这里是一个字符串),我需要在 getTagSelectionFromDialogBox() 之后对那个字符串做很多工作,我不想在 onClick 中做() 的 DialogInterface.OnClickListener()。
下面是代码片段公共类 MainActivity 扩展 ActionBarActivity NavigationDrawerFragment.FragmentDrawerListener{
public String selectedTitle = null;
public int title_position;
public String[] navTitles = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// do some work
navTitiles = getnavTitles() // fills lsit
handlit();
}
void handleRest(Intent intent) {
getTagSelectionFromDialogBox();
Toast.makeText(getApplicationContext(),"category selected: "+ selectedTitle, Toast.LENGTH_LONG).show();
}
public void getTagSelectionFromDialogBox() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("Select tag");
alertDialog.setSingleChoiceItems(navTitles, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
title_position = which;
selectedTitle = navTitles[which];
dialog.cancel();
}
});
AlertDialog ad = alertDialog.create();
ad.show();
}
}
敬酒后,我必须使用 selectedTitile 并执行一些我不想在 onClick() 中执行的数据库操作
我怎样才能做到这一点?