我在非活动类中遇到运行时权限方法时遇到问题。我想将一个公共MainActivity
方法称为辅助类。
MainActivity.java
方法:
public void a() {
//some method
}
现在是我的帮助班:
Class B {
private Context mContext;
public B(Context context) {
this.mContext = context;
//now I am calling Mainactivity Method
MainActivity mainActivity = new MainActivity();
mainActivity.a();
}
}
从CActivity调用B类:
onCreate() {
B b = new B(this);
}
但它给我一个运行时错误。
更新
我的方法有一个非静态的运行时权限方法。前 - requestPermissions(), onRequestPermissionsResult()
。
答案 0 :(得分:0)
将该方法设为静态,这样您就可以在不创建类对象的情况下调用
例如
public static void testing() {}
现在正在呼叫
MainActivity.testing();
答案 1 :(得分:0)
我认为直接构建活动不是一个好主意。如果您想要通知活动为您的帮助程序类(B类)执行某项任务,您最好implement interfaces进行聆听,或者只使用EventBus库
如果你真的想让你的方法工作,而不是在B类的构造函数中再次实例化Activity,你可以将你的活动作为参数传递给B类吗? (我不确定它会起作用)
答案 2 :(得分:0)
你不能只放B b = new B(this);
,因为你正在实例化另一个类。
相反,请使用getActivity() or getContext()
。
答案 3 :(得分:0)
删除B类并直接在C活动中调用A活动的方法。
使用以下活动扩展您的C活动:
public class C extends A{
...
}
然后在C活动中调用A活动的方法如下:
C.super.requestAppPermissions();
希望它会对你有所帮助。