Android中的putExtra()和getExtra()错误

时间:2018-07-23 07:31:47

标签: android android-intent kotlin

我尝试放回我的id并把它扔回getIntExtra(),当我把我的id的putExtra记录到93时,但我在新的Activity中将其记录回0。

==> PutID

if (position == 1) {
        val intent = Intent(this, PreExamActivity::class.java)
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        intent.putExtra("cat_id", selectedCategoryId)
        Log.e("##", "=======set_cat_id======${selectedCategoryId}")
        startActivity(intent)
    }

==> GetID

cat_id = intent.getIntExtra("cat_id", 0)
    Log.e("##", "=======getcatId====${cat_id}")

==> MyLog是:-

  

E / ##:======= set_cat_id ====== 93   E / ##:======= getcatId ==== 0

2 个答案:

答案 0 :(得分:1)

您可以检查:

if (intent.hasExtra("cat_id")) {...}

如果未执行方括号内的代码,则没有这样的额外值,为什么?
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)的目的是什么?
从文档中:

  

FLAG_ACTIVITY_CLEAR_TOP如果已设置,则正在启动的活动为   已经在当前任务中运行,而不是启动新任务   活动的实例,除此之外的所有其他活动   将被关闭,此意图将被传递到(现在在顶部)   旧活动作为新的意图。

因此,如果您要启动的活动已经打开,将不会收到您提供的额外内容

在您要打开的活动中使用它:

override fun  onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)

    // this is where you check for extras of intent
}

答案 1 :(得分:0)

Bundle extras = intent.getExtras();
if(extras != null)
String data = extras.getString("cat_id");