2017-08-15 84 views
0

我非常擔心非活動類中的運行時權限方法。我想將一個公共MainActivity方法調用給助手類。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(); 
    } 
} 

調用B級從CActivity

onCreate(){ 
    B b = new B(this); 
} 

但它給了我運行時錯誤

更新:

我的方法具有非靜態的運行時權限方法。 EX- requestPermissions(), onRequestPermissionsResult()

+0

粘貼你的錯誤(logcat) –

+0

你可以使用界面。 –

+1

你不應該創建你的活動的實例 – Valentun

回答

0

作出這樣的方法靜態的,所以您可以在不創建類對象

public static void testing() {} 

現在呼籲

MainActivity.testing(); 
0

打電話,我不認爲這是一個很好的想法直接構建活動。如果你想發信號給你的助手類(B類)做一些任務,你最好implement interfaces聽或簡單地使用EventBus

如果你真的想讓你的方法工作,而不是再次實例化活動在B類的構造函數中,您可以將您的活動作爲參數傳遞給B類嗎? (我不確定它會起作用)

0

因爲您正在實例化另一個類,所以不能只將B b = new B(this);。可以使用getActivity() or getContext()

0

刪除B類並直接在C活動中調用A活動的方法。

有了這樣的活動擴展你的C活動:

public class C extends A{ 
... 
} 

然後在C活性調用活動的方法如下圖所示:

C.super.requestAppPermissions(); 

希望它會幫助你。

相關問題