Android:不推荐使用getIntent()

时间:2015-05-31 15:18:22

标签: android android-intent android-fragments

我的程序包含一个MainActivity和两个片段活动。我需要一个片段从用户获取String值并将其传递给第二个片段。

我试图围绕如何做到这一点。由于我熟悉意图,我在另一篇文章中找到了this answer,并决定尝试一下。一切都很好,直到我进入第4步,当我尝试在我的第二个片段中使用Intent i = getIntent();时,Studio不会让我使用它并说"getIntent(java.lang.String) is deprecated"

这对我来说没有意义,因为我在其他程序中使用getIntent()没有问题,并且让我在我的MainActivity中使用它(来自另一篇文章的第2步)而没有尖叫对我。

我知道这可以在不使用意图的情况下完成,但我无法弄明白,也无法找到任何真正完整的教程。所以我想我的问题是:

  1. 我可以为此目的使用意图吗?我该怎么做才能解决这个弃用问题?
  2. 任何其他建议,解释或链接“解释它就像我5”教程将非常有帮助和欢迎。我用Google搜索并阅读了一些,但我仍然不理解这一点,并且变得越来越沮丧。看起来这应该是一个相对简单的概念。

3 个答案:

答案 0 :(得分:1)

将Object从Activity传递给Java类时遇到同样的问题。我没有理由给这个问题一个downVote。这是我做的事。
此活动发送数据

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


收到数据(In Data.class)
我试过这个,但Android Studio说 getIntent 已弃用了Intent intent = Intent.getIntent();

那么我可以使用什么代替getIntent(),因为我在互联网上找到的所有解决这个问题的解决方案都使用getIntent()


修改
我正在玩这个,发现我试图在Java Class(非活动)中接收数据。但是当我在Activity中使用它时,它工作正常。但它让我想到另一个问题,即如何将数据从Activity发送到Java类(这不是一个Activity)。

答案 1 :(得分:0)

这意味着,在进一步的版本中无法支持此方法。该方法仍然在API中,用于在不确定的时间内向后兼容。大多数情况下使用弃用的方法是危险的,或者有更好的方法来实现这一点。 就像描述here

一样

在这种情况下,您应该使用:parseUri(String, int)来实现此目标(根据android developer api)。

答案 2 :(得分:0)

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