You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Fragment中通过Intent获取UID以访问Firestore数据?

解决Fragment中无法获取Intent参数及Firestore数据加载问题

核心问题原因

Fragment没有独立的Intent对象,直接调用intent.getStringExtra("uid")无法正确获取参数,这是Fragment与Activity的机制差异导致的。

正确获取参数的两种方式

方式1:通过Bundle传递参数(推荐,低耦合)

在启动Fragment的宿主Activity中,先将参数存入Bundle再传递给Fragment:

// 宿主Activity中启动Fragment的代码
val uid = intent.getStringExtra("uid")
val bundle = Bundle().apply {
    putString("uid", uid)
}
val categorieFragment = CategorieFragment().apply {
    arguments = bundle
}
// 执行Fragment替换/添加操作
supportFragmentManager.beginTransaction()
    .replace(R.id.fragment_container, categorieFragment)
    .commit()

然后在Fragment中从arguments取出参数:

val uid = arguments?.getString("uid") ?: return // 空安全处理,无参数则停止执行

方式2:从宿主Activity的Intent获取(临时方案,高耦合)

如果临时需要直接从Activity取参数:

val uid = activity?.intent?.getStringExtra("uid") ?: return

完整Firestore数据加载及分类名显示代码

修改你的Fragment代码,加入空安全处理,并实现分类名称显示逻辑:

val db = FirebaseFirestore.getInstance()
val uid = arguments?.getString("uid") ?: return

// 1. 获取分类名称并显示到TextView
db.collection("categories").document(uid).get()
    .addOnSuccessListener { documentSnapshot ->
        if (documentSnapshot.exists()) {
            val categoryName = documentSnapshot.getString("name")
            // 替换成你的TextView实例
            categoryNameTextView.text = categoryName
        }
    }
    .addOnFailureListener {
        // 处理获取分类名失败的情况,比如弹出Toast提示
    }

// 2. 获取分类下的壁纸数据
db.collection("categories").document(uid).collection("categoriewallpaper")
    .addSnapshotListener { value, error ->
        if (error != null) {
            // 监听失败处理逻辑
            return@addSnapshotListener
        }
        val listOfCatData = arrayListOf<CatModel>()
        value?.toObjects(CatModel::class.java)?.let {
            listOfCatData.addAll(it)
        }
        // 后续处理壁纸列表数据,比如绑定到RecyclerView Adapter
    }

关键注意事项

  • 避免使用!!强制非空,改用?:或let处理空值,防止空指针崩溃
  • 优先使用Bundle传递参数,让Fragment不依赖宿主Activity的Intent,提升组件复用性
  • Firestore操作是异步的,必须在回调中处理数据(比如设置TextView文本)

内容的提问来源于stack exchange,提问作者Choco Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:53:05