我的新班级未获认可参加活动

时间:2019-09-30 03:54:36

标签: android class

我想将所有对话框移到一个类中并从那里进行访问。所以我创建了一个新的Java类:

package com.myapp.utils;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import androidx.appcompat.app.AlertDialog;
import com.myapp.R;

public class dialogs {

  public void showNetworkDialog (Context mContext) {
    AlertDialog.Builder builder =
            new AlertDialog.Builder(mContext, R.style.MyAlertDialogStyle);
    builder.setTitle(R.string.warning)
            .setCancelable(false)
            .setMessage(R.string.no_network)
            .setNegativeButton(R.string.quit, (dialog, id) ->  ((Activity)mContext).finish())
            .setPositiveButton(R.string.agree, (dialog, id) -> {
                Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
                mContext.startActivity(intent);
            }).show();
  }

}

我将新课导入了我的活动

import com.myapp.utils.dialogs;

问题是,当我尝试使用

访问时,我的Android Studio无法识别showNetworkDialog过程。
showNetworkDialog(myActivity.this);

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您必须创建您的dialogs类的实例,然后尝试使用该method来调用此class的{​​{1}}。喜欢以下内容。

instance

OR

您可以使dialogs dialog = new dialogs() dialog.showNetworkDialog(myActivity.this); 避免像下面那样创建static function

instances

现在,您可以使用 public static void showNetworkDialog (Context mContext) { //.... } 来调用method,而无需创建class name

instance

另一种方法

您可以创建一个单个类,以将一个类的dialogs.showNetworkDialog(myActivity.this); restrict变成一个instantiation

object

现在,您可以从如下所示的任何地方调用方法。

// singleton design pattern 
public class Dialogs { 
    private static Dialogs obj; 

   //make the constructor private so that this class cannot be instantiated
    private Dialogs() {} 

    // Only one thread can execute this at a time 
    public static synchronized Dialogs getInstance() { 
        if (obj==null) 
            obj = new Dialogs(); 
        return obj; 
    } 

    public void showNetworkDialog (Context mContext) {
      // your code here
    }
} 

希望它对您有帮助。 快乐编码