如何从片段获取数据到另一个活动? (不是容器活动)[重复]

Posted

技术标签:

【中文标题】如何从片段获取数据到另一个活动? (不是容器活动)[重复]【英文标题】:How to get data from fragment to another activity? (Not container activity) [duplicate] 【发布时间】:2021-12-18 13:11:53 【问题描述】:

所以我想要的是当用户从溢出菜单中选择“配置文件”时启动一个新活动(ProfileActivity),并且我想同时将一些数据传递给该 ProfileActivity。 如何正确地将数据从片段传输到不是片段本身容器的另一个活动?我执行以下操作:

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)

点击菜单中的 Profile 按钮后,数据应该转移到另一个活动中

   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)
    

但是什么也没发生,为什么?我做错了什么?

【问题讨论】:

How to properly transfer data from a fragment to another activity that is not a container of the fragment itself? 活动包含片段,所以某处你是带着意图开始这个活动的,对吧?将数据传递给该意图 @a_local_nobody 我需要打包吗?或者只是如何发送意图?如果我从片段本身做它会有多正确? ***.com/questions/2091465/… 这能回答你的问题吗? Passing Data Between Fragments to Activity 【参考方案1】:

如果您从片段路由到另一个 Activity,您可以使用 putExtra 将数据放入 Intent,然后使用 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);

你不需要使用接口方法。 (如果您必须从一个片段路由到活动)。

【讨论】:

我需要打包吗?或者只是如何发送意图?可以举个更详细的例子吗? 让我为你编辑答案。

以上是关于如何从片段获取数据到另一个活动? (不是容器活动)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将数据从一个片段发送到另一个片段时出错。 (两个片段都由一个活动托管)

如何将值从一个活动中的片段传递到另一个活动? [复制]

如何将数据从一个活动传递到android中的另一个活动片段? [复制]

onDetach()不要求从一个片段移动到另一个片段

如何从片段获取数据到活动? [复制]

如何共享元素从片段到活动的过渡