对话片段创建和调用时出现问题



我正在创建一个带有两个按钮的简单DialogFragment,它应该只在选择两个选项中的任何一个时显示Toast。当您在活动上按下某个特定按钮时,将显示此对话框。由于某种原因,代码没有显示任何类型的错误,但是当我单击该按钮时,应用程序崩溃了。我该如何解决此问题?

我首先尝试为Dialog做一个自定义的XML文件和java文件,但我也无法做到这一点。 Google's documentation和其他教程也无济于事

公共类 Config 扩展了 AppCompatActivity {

Button btncanc;
Button btnreestab;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_config);
    btncanc = (Button) findViewById(R.id.btncnacelset);
    btnreestab = (Button) findViewById(R.id.btnrest);
    btncanc.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Toast toast = Toast.makeText(getApplicationContext(),"Operación cancelada",Toast.LENGTH_SHORT);
            toast.show();
            Config.this.finish();
        }
    });
    btnreestab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
            builder.setMessage("Hola");
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast toast = Toast.makeText(getApplicationContext(),"hola",Toast.LENGTH_SHORT);
                    toast.show();
                }
            });
            builder.setNegativeButton("cancela", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast toast = Toast.makeText(getApplicationContext(),"adios",Toast.LENGTH_SHORT);
                    toast.show();
                }
            });
            AlertDialog dialog = builder.create(); dialog.show();
        }
    });
}

}

您可以从上下文中复制样式。使警报对话框初始化。

new AlertDialog.Builder(Config.this)

通过其他方式,您可以在样式中定义自定义样式.xml例如

<style name="myDialog" parent="Theme.AppCompat.Dialog">
    <item name="android:windowNoTitle">true</item>
    ...
</style

并初始化警报对话框

AlertDialog.Builder dialog = new AlertDialog.Builder(getApplicationContext(), R.style.myDialog);

此崩溃的原因是AppCompatActivity具有Theme.AppCompat,因此您应该使用此主题。结帐那次崩溃。

您需要将 Theme.AppCompat 主题(或后代(与此一起使用 活动

最新更新