首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有时意图返回null

有时意图返回null
EN

Stack Overflow用户
提问于 2015-02-25 08:01:11
回答 1查看 100关注 0票数 0

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

代码语言:javascript
运行
复制
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方法:

代码语言:javascript
运行
复制
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为什么?我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2015-02-25 08:23:06

尝试按照FLAG_ACTIVITY_CLEAR_TOP:http://developer.android.com/reference/android/content/Intent.html文档中的说明覆盖函数onNewIntent

代码语言:javascript
运行
复制
@Override
protected void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);
}

进一步

我怀疑这是因为你的代码实际上是从堆栈中复活了一个旧的活动,而不是启动一个新的活动,而意图没有被正确地交付。

另外,由于appVersion不会更改,您可以考虑将其保存在AppPrefs中,然后直接从那里访问它。比通过意图传递更可靠,也更整洁。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28708746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档