替代setButton

Myr*_*lia 29 android

我在我的android项目中使用此代码:

alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        }
    });
Run Code Online (Sandbox Code Playgroud)

但是,Eclipse说它已setButton()被弃用.请帮助我提供替代解决方案.谢谢!

Ven*_*h S 67

AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle("ALERTTILESTRING")
        .setMessage("alertNameString")
        .setCancelable(false)
        .setNegativeButton("Close",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        });
        AlertDialog alert = builder.create();
        alert.show();
    }
Run Code Online (Sandbox Code Playgroud)

我希望上面的代码是一个很好用的对话框


Mah*_*ter 34

setButton()不是被弃用的东西,而是那个函数+参数组合.仍然有setButton(),但你需要为按钮提供一个ID作为setButton()的第一个参数:

alertDialog.setButton(0, "OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
      <do something>;
    }
});
Run Code Online (Sandbox Code Playgroud)

如果要为所有按钮提供相同的OnClickListener,这非常有用:

class alertDialogOnClickListener implements DialogInterface.OnClickListener {
    public void onClick(DialogInterface dialog, int which) {
        switch(which){
            case 1:
                <do something>;
                break;
            case 2:
                <do something>;
                break;
        }
    }
}
alertDialog.setButton(1, "OK", new alertDialogOnClickListener());
alertDialog.setButton(2, "Cancel", new alertDialogOnClickListener());
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案强制关闭:java.lang.IllegalArgumentException:Button不存在 (2认同)
  • 而不是0,1等使用:DialogInterface.BUTTON_NEGATIVE DialogInterface.BUTTON_POSITIVE DialogInterface.BUTTON_NEUTRAL等等 (2认同)

Jam*_*vec 13

使用: setButton(int whichButton, CharSequence text, DialogInterface.OnClickListener listener);

对于whichButton使用下列之一:

DialogInterface.BUTTON_POSITIVE 
DialogInterface.BUTTON_NEGATIVE
DialogInterface.BUTTON_NEUTRAL 
Run Code Online (Sandbox Code Playgroud)


Md.*_*moy 7

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("Alert");
            builder.setIcon(R.drawable.ic_launcher);
            builder.setMessage("Attention");
            builder.setPositiveButton("Get Location",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();

                        }
                    });

            builder.setNeutralButton("Set Location",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {



                        }
                    });

            builder.setNegativeButton("Exit",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();

                        }
                    });
            builder.show();
Run Code Online (Sandbox Code Playgroud)