我想将所有对话框移到一个类中并从那里进行访问。所以我创建了一个新的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);
我做错了什么?
答案 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
}
}
希望它对您有帮助。 快乐编码