有时intent返回null

时间:2015-02-25 00:01:11

标签: android

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

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);
        }
    }

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

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

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

我的应用版本为17,但有时Log.w正在为1撰写App version。我的意思是有时意图获得空值。但为什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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

继续

我怀疑这种情况正在发生,因为您的代码实际上是从堆栈中复活旧活动而不是正确传递意图,而不是启动新活动。

此外,由于appVersion不会改变,您可以考虑将其保存在AppPrefs中,然后从那里访问它。比通过意图更可靠,更清洁。 :)