单击按钮时无法显示警告对话框 Android
Can't display alert dialog on button click Android
所以我创建了一个多选警报对话框。问题是我无法显示它。我想在用户单击另一个 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();
}
}
那我该怎么做呢?我尝试在 activity 中创建一个方法并使用按钮 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" />
从您的对话框中删除显示代码并将其放在调用 activity 中。
并在 onCreateDialog(Bundle savedInstanceState) 方法中 return builder.create();
onCreateDialog 必须 return 对话框但 show() return无效。
我已经测试了你的问题并得到了解决方案,请按照这些步骤操作。
在您的 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;
所以我创建了一个多选警报对话框。问题是我无法显示它。我想在用户单击另一个 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();
}
}
那我该怎么做呢?我尝试在 activity 中创建一个方法并使用按钮 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" />
从您的对话框中删除显示代码并将其放在调用 activity 中。 并在 onCreateDialog(Bundle savedInstanceState) 方法中 return builder.create();
onCreateDialog 必须 return 对话框但 show() return无效。
我已经测试了你的问题并得到了解决方案,请按照这些步骤操作。
在您的 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;