[英]AlertDialog not showing when not onCreate
我有一个活动,必须显示一个带有ListView的AlertDialog,以便用户选择选项之一。 当我将AlertDialog的代码放入onCreate方法中时,它可以工作。 但是在其他地方时却没有。 控制台上没有错误。
这是在“活动”中被称为的地方:
@Override
public void onStateChanged(IntegratorState state) {
switch (state.getState()) {
case AWAITING_MENU_OPTION:
IntegratorHelper.showOptionsMenu(state, SitefMenuActivity.this).show();
break;
default:
Toast.makeText(getApplicationContext(), state.getState().name(),
Toast.LENGTH_LONG).show();
}
}
这是我在另一个类中创建对话框的地方:
public static AlertDialog showOptionsMenu(IntegratorState state, Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(state.getGatewayMessageExtra());
String[] strings;
strings = state.getGatewayMessage().split(";");
final List<String> options = Arrays.asList(strings);
builder.setAdapter(new MenuSaleAdapter(context,
android.R.layout.simple_list_item_1, options),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == options.size()-1) {
// Do a thing
} else {
// Do other thing
}
}
});
return builder.create();
}
private static class MenuSaleAdapter extends ArrayAdapter<String> {
public MenuSaleAdapter(Context context, int textViewResourceId,
List<String> objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView,
parent);
view.setTextColor(Color.BLACK);
return view;
}
}
我试图将所有代码放在同一个Activity中,但仍然无法正常工作。 该应用程序不会冻结或执行任何操作,只是不显示对话框。 有任何想法吗? 谢谢
尝试将第一部分更改为:
@Override
public void onStateChanged(IntegratorState state) {
switch (state.getState()) {
case AWAITING_MENU_OPTION:
IntegratorHelper.showOptionsMenu(state, SitefMenuActivity.this);
break;
default:
Toast.makeText(getApplicationContext(), state.getState().name(),
Toast.LENGTH_LONG).show();
}
}
第二部分:
public static void showOptionsMenu(IntegratorState state, Activity activity) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(state.getGatewayMessageExtra());
String[] strings;
strings = state.getGatewayMessage().split(";");
final List<String> options = Arrays.asList(strings);
builder.setAdapter(new MenuSaleAdapter(activity,
android.R.layout.simple_list_item_1, options),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == options.size()-1) {
// Do a thing
} else {
// Do other thing
}
}
});
builder.create().show();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.