如何从片段获取数据到另一个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)。