单击Android按钮时无法显示警告对话框

时间:2015-11-15 12:39:19

标签: java android dialog alert

所以我创建了一个多选警报对话框。问题是我无法显示它。我想在用户点击另一个Activity中的按钮时显示它。这是代码。

public class FlourishPickerDialog extends DialogFragment {
    public ArrayList<String> flourishSet = new ArrayList<>();

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final ArrayList mSelectedItems = new ArrayList();
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(R.string.flourish_picker_text)
                .setMultiChoiceItems(R.array.dealersGripFlourishArr, null, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        if (isChecked) {
                            mSelectedItems.add(which);
                        } else if (mSelectedItems.contains(which)) {
                            mSelectedItems.remove(Integer.valueOf(which));
                        }
                    }
                })

                .setPositiveButton(R.string.create, new DialogInterface.OnClickListener() {
                    @Override
                    public  void onClick(DialogInterface dialog, int id) {
                        flourishSet = mSelectedItems;
                    }
                })

                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
        builder.create();
        return builder.show();
    }

}

那我怎么能这样做?我尝试在活动中创建一个方法并使用onClick按钮调用它但我不能。提前致谢。 编辑:

我也尝试输入builder.show();在builder.create()之前;并反转。 这是我尝试显示它的方式。这是xml文件的activity.java中的方法,其中包含按钮onClick。

public void showFlourishPicker() {
    DialogFragment alert = new FlourishPickerDialog();
    alert.show(getFragmentManager(), "flourishes");
}

编辑2:

这是xml onClick

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button"
    android:onClick="showFlourishPicker"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="86dp" />

2 个答案:

答案 0 :(得分:1)

从对话框中删除显示代码并将其放入调用活动中。 并在onCreateDialog(Bundle savedInstanceState)方法中返回builder.create();

onCreateDialog必须返回Dialog,但show()返回void。

答案 1 :(得分:1)

我已经测试了您的问题,我得到了解决方案,请按照这些步骤操作。

MainActivity导入此内容:

import android.support.v4.app.DialogFragment;

按以下方式拨打电话:

public void showFlourishPicker (View v){
  DialogFragment alert = new FlourishPickerDialog();
  alert.show(getSupportFragmentManager(), "flourishes");
}

在你的FlourishPicker添加此导入:

import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;