如何在课堂上结束对话?

时间:2016-05-11 04:27:43

标签: java android android-alertdialog

我正在开发一个Android应用程序,我注意到我在不同的片段/活动中使用相同的对话框。

我试图将它包装在一个类中,但只要有时间显示对话框,我的应用程序就会崩溃。有什么想法吗?

对话框类

public class Diaglogs {
+
+    private Context context;
+
+    public Diaglogs(Context context) {
+        this.context = context;
+    }
+
+    public void createPlaylistDialog() {
+        AlertDialog.Builder builder = new AlertDialog.Builder(context);
+        builder.setTitle("Enter name of the playlist");
+
+        // Set up the input
+        final EditText input = new EditText(context);
+
+        // Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
+        input.setInputType(InputType.TYPE_CLASS_TEXT);
+        builder.setView(input);
+
+        // Set up the buttons
+        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                String playListName = input.getText().toString();
+                if (!"".equals(playListName)) {
+                    Toast.makeText(context, "the c=playlist would be created here", Toast.LENGTH_SHORT);
+                } else {
+
+                }
+            }
+        });
+        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int which) {
+                dialog.cancel();
+            }
+        });
+        builder.show();
+    }
+
+}

错误

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

2 个答案:

答案 0 :(得分:0)

DialogFragment旨在实现此目的。

对于简单的“ok,no”,您可以使用构建器,但使用DialogFragment可以更轻松地处理配置更改。

PS:错误总是显示你的堆栈。

答案 1 :(得分:0)

当您可以在不同类型的Activity中使用一个对话框时,会发生此类错误。

因此,您可以在对话框中添加特定的对话框主题,如下例所示:

 new AlertDialog.Builder(
  new ContextThemeWrapper(context, android.R.style.Theme_Dialog));