有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在另一个类中调用AlertDialog

我想创建一个java类来保存我的应用程序的所有警报。我想使这些方法是静态的,这样它们更容易调用。这是我的密码

警报级别

public class Alerts {

    // Player has not selected a team
    public static void noPlayerTeam(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(view);
        builder.setMessage("Select your team.");
        builder.setCancelable(true);

        builder.setNeutralButton(
                "Okay",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });

        AlertDialog a = builder.create();
        a.show();
    }
}

访问权限代码

Alerts.noPlayerTeam(view);

文档显示AlertDialog.Builder(Context context)

我正在努力将活动的上下文获取到Alert类。上面代码的错误是错误:(13,63)错误:不兼容的类型:视图无法转换为上下文

我知道代码是有效的,因为我可以在与活动相同的脚本中执行它


共 (3) 个答案

  1. # 1 楼答案

    view.getContext()代替view

        AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
    

    需要将有效的上下文(UI-Context)传递给构建器构造函数以获取AlertDialog实例

  2. # 2 楼答案

    试试这个

    • 把这个放到Constant

    public static void alertDialogShow(Context context, String message)
        {
            final AlertDialog alertDialog = new AlertDialog.Builder(context).create();
            alertDialog.setMessage(message);
            alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
            {
                public void onClick(DialogInterface dialog, int which) 
                {
                    alertDialog.dismiss();
              } 
            }); 
            alertDialog.show();
        }
    

    • 打电话给Activity

    Constant.alertDialogShow(YourActivity.this,"Your Error Message");
    
  3. # 3 楼答案

    警报的通用类

    public class Alert {
        // Alert with Message and ok
        public static void showAlertDialog(Context context,String title ,String msg){
    
            AlertDialog.Builder builder=new AlertDialog.Builder(context);
            builder.setTitle(title);
            builder.setMessage(msg);
            builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }});
            builder.create().show();
        }
        // Alert with Message and ok Click Event
        public static void showAlertDialog(Context context, String title ,String msg, DialogInterface.OnClickListener listener){
    
            AlertDialog.Builder builder=new AlertDialog.Builder(context);
            builder.setTitle(title);
            builder.setMessage(msg);
            builder.setPositiveButton("OK", (DialogInterface.OnClickListener) listener);
            builder.setNegativeButton("Cancel",(DialogInterface.OnClickListener) listener);
            builder.create().show();
        }
    }
    

    在主要活动课中

    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //Alert.showAlertDialog(this,"Testing","Demooo");
    
            Alert.showAlertDialog(this,"Testing","Demoooooo", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (which==DialogInterface.BUTTON_POSITIVE) {
                        //Your Code
                    }else
                        {
                        //Your Code
                    }
    
                }});
        }
    }