getApplicationContext()在Application类中返回null

时间:2017-09-06 06:14:21

标签: java android

我创建了一个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。我错过了什么吗?我查看了thisthis,了解了如何做到这一点;但结果仍然相同。

我已将该类的名称添加到清单中。

<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的值(这是大多数答案都是指出)。

2 个答案:

答案 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方法来获取应用程序上下文。