有时intent返回null



在登录活动中,我有以下行:

public final static String APPV = "com.impact.pack.APPV";
private void startMainActivity() {
        Intent intent = new Intent(context, MainActivity.class);
        intent.putExtra(APPVT,getAppVersion(context));
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent);
}
private static int getAppVersion(Context context) {
        try {
            PackageInfo packageInfo = context.getPackageManager()
                    .getPackageInfo(context.getPackageName(), 0);
            return packageInfo.versionCode;
        } catch (NameNotFoundException e) {
            // should never happen
            throw new RuntimeException("Could not get package name: " + e);
        }
    }

我正在登录活动中从onCreate调用startMainActivity方法。

这是我主要活动的onCreate方法:

Intent intent = getIntent();
APPV=intent.getIntExtra(LoginActivity.APPVT,1);
Log.w("App version:",""+APPV);

我的应用程序版本是17,但有时Log.w正在为App version编写1。我的意思是,有时意图是获取null值。但为什么呢?我该如何解决此问题?

尝试覆盖FLAG_ACTIVITY_CLEAAR_TOP文档中所述的onNewIntent函数:http://developer.android.com/reference/android/content/Intent.html

@Override
protected void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);
}

进一步

我怀疑之所以会发生这种情况,是因为您的代码实际上是在从堆栈中复活一个旧活动,而不是启动一个新活动,并且没有正确地传递意图。

此外,由于appVersion不会更改,您可以考虑将其保存在AppPrefs中,然后从那里访问它。比传递意图更可靠、更干净。:)

最新更新