为何AlertDialog.setButton设置OnClickListener时提示找不到合适方法?
错误原因
你调用的AlertDialog.setButton()方法签名不匹配,官方的setButton方法所有重载都要求第一个参数是按钮类型常量(如确定、取消、中立),而非直接传入按钮文本。
方案一:修正现有代码的setButton参数
在setButton方法中第一个参数传入按钮类型常量,第二个参数是按钮文本,第三个是点击监听器:
package com.example.dialog; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlertDialog alertDialog= new AlertDialog.Builder(this).create(); alertDialog.setTitle("Term and Conditons"); alertDialog.setIcon(R.drawable.baseline_info_24); alertDialog.setMessage("have you read all term and condition"); // 第一个参数传入按钮类型常量,指定按钮角色 alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "yes, I've read", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "Yes, you can proceed now..", Toast.LENGTH_SHORT).show(); } }); alertDialog.show(); } }
方案二:使用AlertDialog.Builder链式调用(更简洁规范)
推荐直接通过Builder链式调用设置按钮,代码更简洁且符合Android开发规范:
package com.example.dialog; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new AlertDialog.Builder(this) .setTitle("Term and Conditons") .setIcon(R.drawable.baseline_info_24) .setMessage("have you read all term and condition") .setPositiveButton("yes, I've read", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "Yes, you can proceed now..", Toast.LENGTH_SHORT).show(); } }) .show(); } }
补充说明
按钮类型常量的作用:
DialogInterface.BUTTON_POSITIVE:代表确定类按钮(通常在右侧)DialogInterface.BUTTON_NEGATIVE:代表取消类按钮(通常在左侧)DialogInterface.BUTTON_NEUTRAL:代表中立类按钮(通常在中间)
内容的提问来源于stack exchange,提问作者THE Anonymous
相关产品推荐
相关产品推荐

