Android Intent::putExtra()和EXTRA_MESSAGE=";com.example.myfirstapp.MESSAGE“;;
我的代码是 首先,我想知道第20行: 我有两个问题: a。为什么将MY_消息分配给com.example.myfirstapp.MESSAGE? B什么是com.example.myfirstapp.MESSAGE? C我从不在任何地方发信息;这是像r.java文件中的变量一样自动生成的,还是需要在某个地方生成 第二,关于第40行:intent.putExtra(额外消息,消息) 我不确定此方法是否会向即将调用的活动添加消息,或者。。。在某种程度上,我很难理解这一点,因为我不完全了解意图的意义。 我想阅读我的200基础部分,了解什么是一切,但我已经设定了最后期限,并且我被告知暂时不要在这个项目中采用这种方法 根据对的解释,我知道目的是: Intent本身是一个Intent对象,是一个被动的数据结构,包含要执行的操作的抽象描述 有人能解释一下这个意图是用来做什么的,或者提供一些比文档更好的快速文章吗 B.)更清楚地解释putExtra()的作用和这些参数: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(额外消息,消息) 我不确定此方法是否会向即将调用的活动添加消息,或者。。。在某种程度上,我很难理解这一点,因为我不完全了解意图的意义。
- 使用包前缀命名额外数据的名称
- 值字符串数组数据值
意图
被恰当地命名;这是你想做的。正如上面所说:
它最重要的用途是在启动活动时,可以将其视为活动之间的粘合剂。它基本上是一个被动数据结构,包含对要执行的操作的抽象描述
根据您的代码,您熟悉通过意图启动活动
:
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