当前位置: 首页 > 知识库问答 >
问题:

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

桓信鸥
2023-03-14

我的代码如下:

首先,我想知道第20行:

我有两个问题:

A.为什么MY_MESSAGE被分配给com.example.myfirstapp.MESSAGE?B.com.example.myfirstapp.MESSAGE是什么?c.我从来没有在任何地方做过MESSAGE;这是像r.java文件中的变量一样自动制作的,还是我需要在某个地方制作它?

第二,关于第40行:intent.putExtra(EXTRA_MESSAGE,留言);

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

鉴于Android文档的解释,我知道一个意图是:

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

A.)有人能解释一下这个意图是用来做什么的,或者给出一些比文档更好的快速文章吗?

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

  • name额外数据的名称,带有包前缀。
  • value字符串数组数据值

共有3个答案

谷梁宝
2023-03-14

intents最常见的用途是在应用程序中启动新的活动(屏幕)(第41行)。额外的捆绑包是在活动之间传递数据的一种方式。额外的作为键值对输入,因此EXTRA_MESSAGE一个键用于识别一个特定的值,以便它可以被另一个活动检索和使用。

景高杰
2023-03-14

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

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

所以要回答你的第一个问题:-

a、 为什么我的_消息被分配到com。实例我的第一个应用。消息b、 什么是com。实例我的第一个应用。消息c、 我从不在任何地方发信息;这是像r.java文件中的变量一样自动生成的,还是需要在某个地方生成?

我的答案是:-

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

com.example.myfirstapp.留言

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

现在你也可以写得很好:-

intent.putExtra("com.example.myfirstapp.MESSAGE", message);

而不是:-

intent.put(EXTRA_MESSAGE、留言);

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

这也使得其他活动更容易通过一个简单的字符串变量引用这个键。因此,为了让其他活动(加上其他自我解释的功能)可以访问它,你可以这样做:-

public final static String EXTRA_MESSAGE=“com.example.myfirstapp.MESSAGE”;

如果我碰巧错过了什么或哪里出了问题,请纠正我。

周威
2023-03-14

一个Intent被适当地命名;这是你想要做的。正如留档所说:

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

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

new Intent(this, DisplayMessageActivity.class);

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

关于你真正的问题:

  1. “目的是什么?”如上所述;基本上,它是用来告诉操作系统你的目标是什么,它来自哪里,以及它应该提供什么数据。你已经在行动中看到了这一点,却没有意识到;这个构造函数就是您一直在使用的,它详细说明了“from”和“to”部分。当您使用putExtra时,您为意图提供了它可以提供给代码“to”部分的数据

一旦收到您的Intent,您就可以使用这些相同的数据位(例如,String myStr=getIntent()。getStringExtra(“com.SG.Three_Piece_Radio.YOURKEYNAME”) )并在您调用的活动中随心所欲地使用它们。

 类似资料:
  • 问题内容: 我需要一些调试我的应用程序的帮助。首先:在模拟器和其他一些设备上,我的应用运行良好。在我的设备上,我得到了强制关闭(没有强制关闭消息)。 如果应用程序的活动发生更改,则会发生“崩溃”。 这是该类的一些代码。它只是通过从网页读取html内容。不,HttpRequest由于我无法模拟发布请求,因此无法完成此操作。 因此,在该方法中,我只是将代码传递给另一个类,该类读取,解析和显示内容。 现

  • 我有一个问题关于start活动(意图)和onStop。Android API建议在onStop中保存数据,这就是我在这里所做的: 但是,我想在保存下一个活动后启动它-因此我需要使用intent和startActivity(intent)。 我的问题是,带两个标志的startActivity(intent)是在完成应用程序时调用onStop()方法,还是需要调用finish()?是否允许我在开始新活

  • 我相信有一些显而易见的事情,但还没有找到解决这个简单问题的办法。当用户猜测正确答案时,错误出现在试图启动另一个活动的主活动中: 错误:(85,23)未解析的引用:意图 该代码来自《Android静态编程语言开发》一书中的高/低Android应用程序。 清单对被调用的活动具有以下意图筛选器:

  • 我正在通过Android Studio中的一个应用程序工作,该应用程序使用学校意图传递数据。我已经创建了传递数据的对象,并启动了,但是我不断收到一个警告,说我的方法无法解析。有什么想法吗?提前谢了。

  • 4.4.Intent Intent是构件之间传递消息的一种机制。通过Intent可以显示一个Activity、启动或停止一个Service,也可以当作简单的广播。Intent是异步的,也就是说在发送时不需要阻塞等待它们响应完成。 Intent分为显式(explicit)和隐式(implicit)两种。显式的Intent要求发送者明确地指出接收者是谁;而隐式的Intent只要求发送者指明接收者属于哪

  • 我创建了一个“设置活动”,其中有一个单选按钮组和三个按钮。每个按钮都被编码为向SharedReferences传递不同的字符串。每个字符串都是项目中活动的名称。1)美元活动2)动态增强3。)静态百分比活动 (我使用设备文件资源管理器确认字符串已成功保存到share dPreduce) 我的想法是检索保存到共享首选项的字符串数据并替换构成下面Intent一部分的varActive。 我试图创建一个变