如何从非活动类调用静态方法?
我想从一个非活动类中调用我的Activity中的一个方法。但是app的关闭。无法弄清楚如何解决这个问题,所以我发布了它。如何从非活动类调用静态方法?
公共类MainActivity延伸AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NSOMUHUpdateChecker.checkForUpdates(getBaseContext());
}
public static void boob() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DgrialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
公共类NSOMUHUpdateChecker {
public static void checkForUpdates(Context context) {
MainActivity.boob();
}
日志:
FATAL EXCEPTION: main Process: nif.nhst, PID: 16378
java.lang.RuntimeException: Unable to start activity ComponentInfo{nif.nhst/nif.nhst.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java)
你应该做的,是通过一个context
到非活动类,然后使用该上下文来调用活动的方法,像
((MainActivity)context).boob();
在你的情况,你也可以做一些事情像
NSOMUHUpdateChecker myobj=new NSOMUHUpdateChecker(MyActivity.this);
,然后在类的构造函数
public NSOMUHUpdateChecker(MyActivity act) {
act.boob();
}
希望这有助于。
你要通过context
到boob
方法
变化
public static void boob()
要
public static void boob(Context context)
我没有,它说“错误:(46,21)误差:类MainActivity方法布布不能被应用到给定的类型;需 :找到语境 :没有参数 理由:实际的和正式的参数列表的长度不同” – user8091716
以及我猜你没有选择 - 创建单独的类并粘贴此方法。 – DEADMC
您可以通过简单的非活性类中创建一个回调接口做到这一点,只需要实现它在主要活动中。
public NonActivityClass {
public interface Callback {
void boob();
}
private Callback callerActivity;
public NonActivityClass(Activity activity) {
callerActivity = (Callback)activity;
}
...
}
//call like this
callerActivity.boob();
而且在主要活动中,
public class MainActivity extends Activity
implements IDateCallback {
public void boob() {
//your code!
}
}
你在哪里调用此方法? –
我从main中调用一个方法,在类中调用main中的方法。 Main-> Class-> Main – user8091716
什么是方法和你叫 –