DialogFragment创建和调用的问题

时间:2019-05-28 11:50:21

标签: java android xml

我正在创建一个带有两个按钮的简单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();
        }
    });
}

}

1 个答案:

答案 0 :(得分:0)

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

new AlertDialog.Builder(Config.this)

通过其他方式,您可以在style.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主题(或后代)   活动