在登录活动中,我有以下几行:
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
。我的意思是有时意图获得空值。但为什么?我该如何解决这个问题?
答案 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中,然后从那里访问它。比通过意图更可靠,更清洁。 :)