如何从片段获取数据到另一个activity? (不是容器 activity)
How to get data from fragment to another activity? (Not container activity)
所以我想要的是在用户从溢出菜单中选择“配置文件”时启动一个新的 activity (ProfileActivity),并且我想同时将一些数据传递给该 ProfileActivity。
如何正确地将数据从片段传输到另一个不是片段本身容器的 activity?我执行以下操作:
1- 创建接口
interface IProfileToActivity {
fun profileInfo(data: AllHeroes.Global)
}
2- 然后我继承在activity
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)
}
单击菜单中的“配置文件”按钮后,数据应传输到另一个 activity
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)
}
但是没有任何反应,为什么?我做错了什么?
如果您从片段路由到另一个 activity,您可以使用 putExtra
将数据放入意图中,然后使用 getExtra
在 activity 中接收].
片段内,
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);
您不需要使用接口方法。 (如果您必须从一个片段路由到 activity)。
所以我想要的是在用户从溢出菜单中选择“配置文件”时启动一个新的 activity (ProfileActivity),并且我想同时将一些数据传递给该 ProfileActivity。 如何正确地将数据从片段传输到另一个不是片段本身容器的 activity?我执行以下操作:
1- 创建接口
interface IProfileToActivity {
fun profileInfo(data: AllHeroes.Global)
}
2- 然后我继承在activity
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)
}
单击菜单中的“配置文件”按钮后,数据应传输到另一个 activity
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)
}
但是没有任何反应,为什么?我做错了什么?
如果您从片段路由到另一个 activity,您可以使用 putExtra
将数据放入意图中,然后使用 getExtra
在 activity 中接收].
片段内,
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);
您不需要使用接口方法。 (如果您必须从一个片段路由到 activity)。