我尝试放回我的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
答案 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");