我的程序由一个 MainActivity 和两个 Fragment Activity 组成。 我需要一个片段从用户那里获取一个字符串值并将其传递给第二个片段。
我正在努力思考如何做到这一点。 由于我熟悉意图,因此我在另一篇文章中找到了这个答案并决定尝试一下。 一切看起来都很好,直到我进入步骤 4,当我尝试在第二个片段中使用 Intent
i = getIntent();
时,Studio 不会让我使用它并说 "getIntent(java.lang.String) is deprecated"
。
这对我来说没有意义,因为我在其他程序中毫无问题地使用了
getIntent()
,并且它让我在我的MainActivity
(另一篇文章的步骤2)中使用它,而不会对我尖叫。
我知道这可以在不使用意图的情况下完成,但我无法弄清楚,也找不到任何真正彻底的教程来做到这一点。 所以我想我的问题是:
现在回答已经太晚了,但我仍在为其他人提供我的答案。发生这种情况是因为意图基本上是与活动一起工作的。而碎片不是活动,而是附属于活动的。所以你只需要这样做:
Intent intent=getActivity().getIntent();
将对象从 Activity 传递到 Java 类时遇到同样的问题。
这就是我所做的
此 Activity 发送数据
Salary newSalary = new Salary();
Intent intent = new Intent(ViewData.this,Data.class);
intent.putExtra("SalaryObj", newSalary);
Intent intent = Intent.getIntent();
那么我可以用什么来代替
getIntent()
,因为我在互联网上找到的针对这个问题的所有解决方案都使用getIntent()
。
在你的 onCreate 上
val bundle = intent.extras
if (bundle != null) {
idEmployee = bundle?.getString("idEmployee", "")
idClient = bundle?.getString("idClient", "")
listAvailable = bundle?.getStringArrayList("listAvailable") as ArrayList<String>
Log.i("list:", "$listAvailable" )
}
这意味着,以后的版本将不再支持此方法。该方法仍保留在 API 中,以实现向后兼容,具体时间长短不定。大多数情况下,使用已弃用的方法是危险的,或者有更好的方法来实现这一点。 就像这里描述的那样
在这种情况下,您应该使用:
parseUri(String, int)
来实现此目的(根据android开发人员api)。
同样的问题 “getIntent(java.lang.String) 已弃用”。 .
我开发了该应用程序并在
android studio electric eel version on a computer
中保存为zip文件(这个版本没有问题)。当我在android studio koala version
.打开项目时
问题1
intent is deprecated
问题2
need context provided main activity
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
这些对我不起作用 --> 重新启动 android studio,清理项目,重建项目。
solution
最后,我导航 --> file > invalidate caches
在弹出的无效缓存中选择三个选项
应用程序成功为我工作