![](/img/trans.png)
[英]Android studios how to pass a context from mainactivity to another class
[英]How to pass context from MainActivity to another class in Android?
嘗試將上下文從MainActivity類傳遞到另一個時遇到問題。 這是ContextPasser類。
public class ContextPasser extends Application{
public Context context;
public ContextPasser(){
context = getApplicationContext();
}}
但是,如果我在另一個類中使用上下文變量,則如下所示:
Line line = new Line(new ContextPasser().context);
我收到一個空指針異常。 我想要一個不涉及傳遞上下文變量的解決方案,因為我已經查看了所有其他stackoverflows,它們似乎並沒有幫助我。 我發現的解決方案之一是:
Context context;
MyHelperClass(Context context){
this.context=context;
}
這對我沒有幫助,因為我正在調用Line類,
Line line = new Line(new ContextPasser().context);
在另一個稱為GameRunner的類中,如下所示:
public class GameRunner extends Activity {
Line line = new Line(new ContextPasser().context);
public void draw(Canvas canvas){
line.draw(canvas);
getWindow().getDecorView().setBackgroundColor(Color.BLACK);
}
public void update(){
line.update();
}
}
因此,我想創建一個將通過Context而不接受Context類本身的參數的方法。
請讓我知道任何建議或答案。 我真的很感激。 非常感謝您的時間和考慮!
如果您的其他班級是非活動班級,這就是您傳遞Context
:
public class MyNonActivityClass{
// variable to hold context
private Context context;
//save the context received via constructor in a local variable
public MyNonActivityClass(Context context){
this.context=context;
}
}
這就是您傳遞上下文的方式:
MyNonActivityClass mClass = new MyNonActivityClass(this);
OBX的答案顯示了一種方法。 但是您應該了解為什么您的方法行不通。
Android組件如實例Application
和Activity
都沒有完全實現的Context
,直到他們已經被框架進行初始化秒。 這發生在調用onCreate(...)
之前的某個時間。 如果您自己創建一個new
實例,則該實例將不會初始化,也不會用作Context
。 出於相同的原因,在字段分配或構造函數中調用getApplicationContext()
將返回null
或引發異常。
MyActivity extends Activity {
private Context appContext = getApplicationContext(); // wrong
public MyActivity {
appContext = getApplicationContext(); // wrong
}
public void onCreate(final Bundle savedInstanceState) {
appContext = getApplicationContext(); // correct
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.