繁体   English   中英

不在onCreate时未显示AlertDialog

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM