在登录活动中,我有以下几行代码:
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方法。
这是我的main活动的onCreate方法:
Intent intent = getIntent();
APPV=intent.getIntExtra(LoginActivity.APPVT,1);
Log.w("App version:",""+APPV);我的应用程序版本是17,但有时Log.w正在为App version编写1,这意味着有时intent is but value.But为什么?我该如何解决这个问题?
发布于 2015-02-25 08:23:06
尝试按照FLAG_ACTIVITY_CLEAR_TOP:http://developer.android.com/reference/android/content/Intent.html文档中的说明覆盖函数onNewIntent
@Override
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
}进一步
我怀疑这是因为你的代码实际上是从堆栈中复活了一个旧的活动,而不是启动一个新的活动,而意图没有被正确地交付。
另外,由于appVersion不会更改,您可以考虑将其保存在AppPrefs中,然后直接从那里访问它。比通过意图传递更可靠,也更整洁。:)
https://stackoverflow.com/questions/28708746
复制相似问题