Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Intent::putExtra()和EXTRA_MESSAGE=";com.example.myfirstapp.MESSAGE“;;_Android_Android Intent - Fatal编程技术网

Android Intent::putExtra()和EXTRA_MESSAGE=";com.example.myfirstapp.MESSAGE“;;

Android Intent::putExtra()和EXTRA_MESSAGE=";com.example.myfirstapp.MESSAGE“;;,android,android-intent,Android,Android Intent,我的代码是 首先,我想知道第20行: 我有两个问题: a。为什么将MY_消息分配给com.example.myfirstapp.MESSAGE? B什么是com.example.myfirstapp.MESSAGE? C我从不在任何地方发信息;这是像r.java文件中的变量一样自动生成的,还是需要在某个地方生成 第二,关于第40行:intent.putExtra(额外消息,消息) 我不确定此方法是否会向即将调用的活动添加消息,或者。。。在某种程度上,我很难理解这一点,因为我不完全了解意图的意义。

我的代码是

首先,我想知道第20行:

我有两个问题:

a。为什么将MY_消息分配给com.example.myfirstapp.MESSAGE? B什么是com.example.myfirstapp.MESSAGE? C我从不在任何地方发信息;这是像r.java文件中的变量一样自动生成的,还是需要在某个地方生成

第二,关于第40行:intent.putExtra(额外消息,消息)

我不确定此方法是否会向即将调用的活动添加消息,或者。。。在某种程度上,我很难理解这一点,因为我不完全了解意图的意义。 我想阅读我的200基础部分,了解什么是一切,但我已经设定了最后期限,并且我被告知暂时不要在这个项目中采用这种方法

根据对的解释,我知道目的是:

Intent本身是一个Intent对象,是一个被动的数据结构,包含要执行的操作的抽象描述

有人能解释一下这个意图是用来做什么的,或者提供一些比文档更好的快速文章吗

B.)更清楚地解释putExtra()的作用和这些参数:

  • 使用包前缀命名额外数据的名称
  • 值字符串数组数据值

意图最常见的用途是在应用程序中启动新的活动(屏幕)(第41行)。extras捆绑包是在活动之间传递数据的一种方式。EXTRA是以键值对的形式输入的,因此EXTRA_消息是一个键,用于标识特定的值,以便其他活动可以检索和使用它。

一个
意图
被恰当地命名;这是你想做的。正如上面所说:

它最重要的用途是在启动活动时,可以将其视为活动之间的粘合剂。它基本上是一个被动数据结构,包含对要执行的操作的抽象描述

根据您的代码,您熟悉通过
意图启动
活动

new Intent(this, DisplayMessageActivity.class);
这将使用当前的
活动
作为启动
意图
的上下文,并提供要启动的目标类。我想你已经知道了。基本上,
Intent
只是Android设备遵循的一个指南,以便使用正确的信息启动正确的目标

关于你真正的问题:

  • “目的是什么?”如上所述;基本上,它是用来告诉操作系统你的目标是什么,它来自哪里,它应该提供什么数据。你已经在行动中看到了这一点,但没有意识到;是您一直在使用的,详细说明“从”和“到”部分。当您使用
    putExtra
    时,您为
    意图提供了它可以提供给代码“to”部分的数据
  • name
    参数最好通过文档总结:“额外数据的名称,带有包前缀。”这就像
    HashMap
    中的一个键;它是您正在打包的内容的字符串标识符。他们告诉您使用包的前缀,只是为了防止混淆。在你的例子中,你应该使用“com.SG.Three-Piece\u Radio.YOURKEYNAME”;它不必在任何地方声明,也不是常量。只是一根线。该值只是额外的内容(数据);这可能是一大堆不同的东西--
    short
    int
    String
    可包裹的
    ,等等。(这些都可以在中的各种
    putExtra
    s中找到。)

  • 一旦收到您的
    Intent
    ,您就可以使用这些相同的数据位(例如,
    String myStr=getIntent().getStringExtra(“com.SG.Three-Piece\u Radio.YOURKEYNAME”);
    )在你打电话给他们的
    活动中,对他们做你想做的任何事情。

    我认为人们在这里非常有帮助,对意图本身及其目的做出了很好的解释。我从这些答案中学到了很多

    然而,有一个小的方面,我认为需要更多的解释

    因此,要回答您的第一个问题,即:-

    a。为什么将MY_消息分配给com.example.myfirstapp.MESSAGE?B什么是com.example.myfirstapp.MESSAGE?C我从不在任何地方发信息;这是像r.java文件中的变量一样自动生成的,还是需要在某个地方生成

    我的答案是:-

    如前所述,putExtra用于携带附加信息/数据以及即将开始的新活动的意图。putExtra携带的附加信息以键值对的形式给出。 在这个键值对中,键在语法上总是必须是字符串。 在您的例子中,值也是一个字符串,“键”可以是任意随机字符串。 现在,为了确保系统不会将您的密钥与其他应用程序的密钥混淆,您应该始终附加字符串的整个数据包结构。因此,您使用:-

    com.example.myfirstapp.MESSAGE

    其中,MESSAGE实际上是键的名称(需要的字符串,如上所述),它将与传递给新活动的字符串值相关联

    现在,您还可以很好地编写以下内容:-

    intent.putExtra("com.example.myfirstapp.MESSAGE", message);
    
    而不是:-

    intent.putExtra(额外消息,消息)

    但是这样会降低代码的灵活性,以便以后进行更改。至于密钥名称的任何更改,您必须在任何地方更改它。因此,为了避免这种情况,我们宁愿将密钥的名称(在您的示例中为消息)指定给字符串变量(在您的示例中为额外消息)

    这也使得其他活动更容易通过简单的字符串变量引用该键。和s