我创建了一个Shopper
类,为我的项目扩展了Application
类。这就是我试图在课堂上获取背景的方式
public class Shopper extends Application {
private Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public Context getContext() {
return context;
}
}
但getApplicationContext
始终返回null
。我错过了什么吗?我查看了this和this,了解了如何做到这一点;但结果仍然相同。
我已将该类的名称添加到清单中。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="vn.com.shopper">
<application
android:name=".Shopper"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/ShopperTheme"
android:fullBackupContent="true">
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
修改
如果我错了(我可能可能),请纠正我,但我不明白将字段context
作为静态可以影响getApplicationContext
的值(这是大多数答案都是指出)。
答案 0 :(得分:1)
您必须使用静态
public class Shopper extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
并使用
Shopper.getContext();
答案 1 :(得分:0)
private static Application _instance;
public static Application getAppContext() {
return _instance;
}
@Override
public void onCreate() {
super.onCreate();
_instance = this;
}
现在,您可以在整个应用程序的所有类中轻松使用getAppContext方法来获取应用程序上下文。