Android:编写一个在任何地方使用警报对话框的类

时间:2018-08-15 07:45:55

标签: android dialog alert

我是android的新手,我试图为警报对话框编写一个MyAlertDialog类,以便在需要警报对话框的所有地方使用它。我在课堂上写了一种方法showAlertDialog来做到这一点。我发现该方法必须是静态的。谁能告诉我为什么它应该是静态的?这是我的代码:

public class MyAlertDialog extends AppCompatActivity {

public static void alertDialogShow(Context context, String message) {

    final Dialog dialog;
    TextView txtAlertMsg;
    TextView txtAlertOk;

    dialog = new Dialog(context);
    dialog.setContentView(R.layout.activity_my_alert_dialog);
    txtAlertOk = (TextView) dialog.findViewById(R.id.txtAalertOk);
    txtAlertMsg = (TextView) dialog.findViewById(R.id.txtAlertMsg);
    txtAlertMsg.setText(message);
    txtAlertOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
    dialog.show();
}

}

我叫它像波纹管一样:

MyAlertDialog.alertDialogShow(MainActivity.this,"Here is my message");

2 个答案:

答案 0 :(得分:2)

为什么它应该是静态的?

用于内存管理

如何?

将字段声明为静态意味着只有一个实例存在

它不属于特定实例,它们不能引用实例成员,这意味着它们属于类本身

答案 1 :(得分:0)

不必是静态的

您还可以通过非静态方式进行操作:

public class MyAlertDialog {

private Context context;
private String message;

public MyAlertDialog(Context context,String message){
    this.context = context;
    this.message = message;
}

public void alertDialogShow() {

    final Dialog dialog;
    TextView txtAlertMsg;
    TextView txtAlertOk;

    dialog = new Dialog(context);
    dialog.setContentView(R.layout.activity_my_alert_dialog);
    txtAlertOk = (TextView) dialog.findViewById(R.id.txtAalertOk);
    txtAlertMsg = (TextView) dialog.findViewById(R.id.txtAlertMsg);
    txtAlertMsg.setText(message);
    txtAlertOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
    dialog.show(); 
}

要调用它:

MyAlertDialog myAlertDialog = new MyAlertDialog(MainActivity.this,"Here is my message");

myAlertDialog.alertDialogShow();