从一个活动获得结果

启动另一个活动不一定是单向的。你也可以开始另一个活动和接收一个返回结果。获得结果,调用startActivityForResult()(而不是startActivity())。

例如,您的应用程序就可以开始一个摄像头应用程序和接收捕获的照片。或者,你可能开始应用的人为了让用户选择一个联系人,你会收到联系信息。

当然,响应的活动必须返回一个结果。时,它发送结果作为另一个意图对象。你的活动收到onActivityResult()回调。

注意:您可以使用显式或隐式意图当你叫startActivityForResult()。当开始一个你自己的活动获得的结果,您应该使用一个显式意图,以确保您得到预期的结果。

开始活动

没什么特别的意图对象你开始一个活动时使用的结果,但你需要通过一个额外的整数参数startActivityForResult()方法。

整数参数是一个“请求代码”,表明你的要求。当你收到结果的意图,回调提供了相同的请求代码以便应用程序能正确识别结果并决定如何处理它。

例如,下面是如何开始一个活动,允许用户选择一个联系人:

static final int PICK_CONTACT_REQUEST = 1;  // The request code
...
private void pickContact() {
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
    pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}
收到的结果

当用户完成了后续活动和回报,系统调用活动的onActivityResult()方法。该方法包括三个参数:

请求代码传递给startActivityForResult()。

结果代码指定的第二个活动。这是RESULT_OK如果操作成功或者RESULT_CANCELED如果用户退出或操作由于某种原因失败。

一个意图,结果数据。

举例来说,这里的如何处理“选择一个接触”意图的结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request we're responding to
    if (requestCode == PICK_CONTACT_REQUEST) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            // The user picked a contact.
            // The Intent's data Uri identifies which contact was selected.

            // Do something with the contact here (bigger example below)
        }
    }
}

在本例中,返回的结果意图Android的联系人或人们应用程序提供了一个内容Uri标识用户选定的联系人。

为了成功地处理结果,你必须理解结果的格式什么意图。这样做是很容易的,当活动返回一个结果是一个你自己的活动。应用程序包含在Android平台提供自己的api,你可以指望为特定的结果数据。例如,人们应用(联系人应用程序在一些旧版本)总是返回一个结果URI标识的内容选择接触,和相机应用程序返回一个位图在“数据”额外的(参见类对捕获的照片)。

好处:读取联系人数据

上面的代码展示了如何从人民得到一个结果应用不进入细节如何读取的数据结果,因为它需要更高级的讨论内容提供商。然而,如果你很好奇,这里有一些更多的代码显示了如何查询结果数据从选中的联系电话号码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request it is that we're responding to
    if (requestCode == PICK_CONTACT_REQUEST) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            // Get the URI that points to the selected contact
            Uri contactUri = data.getData();
            // We only need the NUMBER column, because there will be only one row in the result
            String[] projection = {Phone.NUMBER};

            // Perform the query on the contact to get the NUMBER column
            // We don't need a selection or sort order (there's only one result for the given URI)
            // CAUTION: The query() method should be called from a separate thread to avoid blocking
            // your app's UI thread. (For simplicity of the sample, this code doesn't do that.)
            // Consider using CursorLoader to perform the query.
            Cursor cursor = getContentResolver()
                    .query(contactUri, projection, null, null, null);
            cursor.moveToFirst();

            // Retrieve the phone number from the NUMBER column
            int column = cursor.getColumnIndex(Phone.NUMBER);
            String number = cursor.getString(column);

            // Do something with the phone number...
        }
    }
}
注意:在Android 2.3(API级别9)之前,执行一个查询联系人提供者(如上所示)的要求应用程序声明READ_CONTACTS许可(见安全与权限)。然而,从Android 2.3开始,联系人/人应用程序授予应用程序暂时允许读取联系人提供者当它返回一个结果。临时许可只适用于特定的联系请求,所以你不能查询另一个联系人指定目的的Uri,除非你做声明READ_CONTACTS许可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,我可以为您提供一些有关JavaScript封装大装盘抽奖活动的建议:1. 首先,要准备好所需的JavaScript代码;2. 然后,定义奖项、获奖者和抽奖规则;3. 最后,使用JavaScript将抽奖活动的相关信息封装成一个大的装盘活动。 ### 回答2: JavaScript封装一个大转盘抽奖活动可以按照以下步骤进行: 1. 首先,我们需要构建一个转盘的HTML元素作为抽奖活动的展示界面。可以使用HTML5的canvas元素来实现一个圆形转盘,并在其中绘制各个奖品区域的扇形。 2. 在JavaScript中,我们可以定义一个Lottery类来管理抽奖活动。这个类可以包含转盘初始化、开始抽奖、停止转盘等方法。 3. 在转盘初始化方法中,我们可以定义奖品的数量、位置以及其他相关配置。同时,可以创建一个监听用户点击活动开始按钮的事件,并在点击事件中调用开始抽奖的方法。 4. 在开始抽奖的方法中,可以随机生成一个抽奖结果,然后通过计算旋转角度将转盘指针旋转到对应的奖品位置。 5. 为了增加抽奖的趣味性,可以在转盘旋转之前添加一段持续一定时间的动画,例如旋转数圈或者逐渐加速旋转。 6. 在停止转盘的方法中,可以计算抽奖结果对应的奖品角度,并通过动画逐渐减速转盘的旋转,直到旋转到目标奖品的角度停止。 7. 最后,可以在抽奖结果确定后,弹出一个提示框或者消息,显示中奖信息,并提供领取奖品的方式。 总体来说,封装一个大转盘抽奖活动主要需要实现转盘的绘制、抽奖逻辑的处理以及动画的控制。通过合理组织代码和事件监听,可以很好地实现一个用户友好的抽奖活动,并提供中奖信息的展示和奖品的领取方式。 ### 回答3: JavaScript是一种广泛应用于网页开发的编程语言,可以用来实现各种交互效果和功能。在这个问题中,我们可以使用JavaScript来封装一个大转盘抽奖活动。 首先,我们需要定义一个包含奖品信息的数组,每个奖品都有一个对应的概率。然后,我们可以使用Math.random()函数生成一个随机数,来决定转盘停在哪个奖品上。 接下来,我们可以创建一个函数,用来处理抽奖的逻辑。在这个函数中,我们可以先计算总的概率,然后用随机数乘以总概率,得到一个随机的概率值。接着,我们可以遍历奖品数组,累计每个奖品的概率值,一旦超过随机概率值,就返回对应的奖品信息。 在页面上,我们可以创建一个转盘的样式,包含多个扇形区域,每个区域对应一个奖品。然后,我们可以通过CSS来实现旋转效果,使转盘能够转动起来。 最后,我们为转盘绑定一个点击事件,当用户点击抽奖按钮时,调用抽奖函数并展示中奖结果。 综上所述,我们可以通过JavaScript封装一个大转盘抽奖活动,通过随机数生成、奖品概率计算和页面交互实现转盘的抽奖功能。这样的活动不仅可以增加用户参与度,还能为用户提供一种有趣的互动体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值