所以我想要的是當用戶從溢位選單中選擇“組態檔”時啟動一個新活動(組態檔活動),并且我想同時將一些資料傳遞給該組態檔活動。如何正確地將資料從片段傳輸到不是片段本身的容器的另一個活動?我執行以下操作:
1-創建一個介面
interface IProfileToActivity {
fun profileInfo(data: AllHeroes.Global)
}
2-然后我在活動中繼承
class ProfileActivity : AppCompatActivity(), IProfileToActivity {
private lateinit var myBinding: ActivityProfileBinding
override fun profileInfo(data: AllHeroes.Global) {
myBinding.tvUsername.text = data.name
myBinding.tvDivision.text = data.rank.rankName
Log.i("Apex Info 3", data.toString())
}
}
3-從片段發送
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
(activity as? IProfileToActivity)?.profileInfo(allInfoApexResponse.global)
mHeroesAdapter.heroesList(allAdapterListHero)
}
單擊選單中的組態檔按鈕后,資料應傳輸到另一個活動
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId){
R.id.action_profile -> {
(activity as? IProfileToActivity)?.profileInfo(testApex)
startActivity(Intent(requireActivity(), ProfileActivity::class.java))
return true
}
}
return super.onOptionsItemSelected(item)
}
但什么也沒發生,為什么?我做錯了什么?
uj5u.com熱心網友回復:
如果您要從片段路由到另一個活動,則可以使用 將資料放入意圖中putExtra,然后使用getExtra.
在片段內部,
Intent profileActivityIntent = new Intent(context,ProfileActivity.class);
profileActivityIntent.putExtra("dataKey",data);
startActivity(profileActivityIntent);
然后在 ProfileActivity 的onCreate方法中,
//assuming that data is a string
String dataFromFragment = getIntent().getStringExtra("dataKey");
Log.i("Data from fragment",dataFromFragment);
您不需要使用介面方法。(如果您必須從一個片段路由到活動)。
如果您的要求不同,請在評論中告訴我。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/348579.html
標籤:安卓 科特林 android-fragments 安卓活动
