Android:getIntent() 已弃用

问题描述 投票:0回答:5

我的程序由一个 MainActivity 和两个 Fragment Activity 组成。 我需要一个片段从用户那里获取一个字符串值并将其传递给第二个片段。

我正在努力思考如何做到这一点。 由于我熟悉意图,因此我在另一篇文章中找到了这个答案并决定尝试一下。 一切看起来都很好,直到我进入步骤 4,当我尝试在第二个片段中使用 Intent

i = getIntent();
时,Studio 不会让我使用它并说
"getIntent(java.lang.String) is deprecated"

这对我来说没有意义,因为我在其他程序中毫无问题地使用了

getIntent()
,并且它让我在我的
MainActivity
(另一篇文章的步骤2)中使用它,而不会对我尖叫。

我知道这可以在不使用意图的情况下完成,但我无法弄清楚,也找不到任何真正彻底的教程来做到这一点。 所以我想我的问题是:

  1. 我还能让 Intent 达到这个目的吗? 我应该怎么做才能解决这个弃用问题?
  2. 任何其他建议、解释或“像我 5 岁一样解释它”教程的链接都会非常有帮助和欢迎。 我已经用谷歌搜索并阅读了一些内容,但我仍然不明白这一点并且变得越来越沮丧。 看起来这应该是一个比较简单的概念。
android android-intent android-fragments
5个回答
10
投票

现在回答已经太晚了,但我仍在为其他人提供我的答案。发生这种情况是因为意图基本上是与活动一起工作的。而碎片不是活动,而是附属于活动的。所以你只需要这样做:

Intent intent=getActivity().getIntent();

2
投票

将对象从 Activity 传递到 Java 类时遇到同样的问题。

这就是我所做的

此 Activity 发送数据

Salary newSalary = new Salary();
Intent intent = new Intent(ViewData.this,Data.class);
intent.putExtra("SalaryObj", newSalary);

它接收数据(在Data.class中)
在这里我尝试了这个,但 Android Studio 说 getIntent 已弃用
Intent intent = Intent.getIntent();

那么我可以用什么来代替

getIntent()
,因为我在互联网上找到的针对这个问题的所有解决方案都使用
getIntent()



编辑:
我正在研究这个,发现我正在尝试接收 Java 类(不是活动)中的数据。但是当我在活动中使用它时,它工作得很好。但这让我想到了另一个问题,即如何将数据从 Activity 发送到 Java 类(不是 Activity)。


1
投票

在你的 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" )
    }

0
投票

这意味着,以后的版本将不再支持此方法。该方法仍保留在 API 中,以实现向后兼容,具体时间长短不定。大多数情况下,使用已弃用的方法是危险的,或者有更好的方法来实现这一点。 就像这里描述的那样

在这种情况下,您应该使用:

parseUri(String, int)
来实现此目的(根据android开发人员api)。


0
投票

同样的问题 “getIntent(java.lang.String) 已弃用”。 .

我开发了该应用程序并在

android studio electric eel version on a computer
中保存为zip文件(这个版本没有问题)。当我在
android studio koala version
.

打开项目时
  1. 问题1

    intent is deprecated

    意图意图 = getIntent();

  2. 问题2

    need context provided main activity

    recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));

这些对我不起作用 --> 重新启动 android studio,清理项目,重建项目。

solution
最后,我导航 -->
file > invalidate caches
在弹出的无效缓存中选择三个选项

应用程序成功为我工作

© www.soinside.com 2019 - 2024. All rights reserved.