如何从非Activity类调用MainActivity方法?

时间:2017-08-15 05:33:54

标签: java android

我在非活动类中遇到运行时权限方法时遇到问题。我想将一个公共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()

4 个答案:

答案 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();

希望它会对你有所帮助。