Android 2.2 API Demos -- 通过调用子Activity返回值

2024-03-25 02:18

本文主要是介绍Android 2.2 API Demos -- 通过调用子Activity返回值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们使用Intent可以将数据从一个Activity传递到下一个Activity,同样,在Android中我们可以将数据从一个Activity返回给前一个Activity。

参考API Demo示例:

1. 定义父Activity,ReceiveResult.java。在这个Activity中我们通过startActivityForResult(intent, GET_CODE)启动子Activity。
Java代码

package com.example.android.apis.app;import java.util.Map;import com.example.android.apis.R;import android.app.Activity;
import android.content.Intent;
import android.text.Editable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;import java.util.Map;public class ReceiveResult extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// Be sure to call the super class.super.onCreate(savedInstanceState);// See assets/res/any/layout/hello_world.xml for this// view layout definition, which is being set here as// the content of our screen.setContentView(R.layout.receive_result);// Retrieve the TextView widget that will display results.mResults = (TextView)findViewById(R.id.results);// This allows us to later extend the text buffer.mResults.setText(mResults.getText(), TextView.BufferType.EDITABLE);// Watch for button clicks.Button getButton = (Button)findViewById(R.id.get);getButton.setOnClickListener(mGetListener);}@Overrideprotected void onActivityResult(int requestCode, int resultCode,Intent data) {// You can use the requestCode to select between multiple child// activities you may have started.  Here there is only one thing// we launch.if (requestCode == GET_CODE) {// We will be adding to our text.Editable text = (Editable)mResults.getText();// This is a standard resultCode that is sent back if the// activity doesn't supply an explicit result.  It will also// be returned if the activity failed to launch.if (resultCode == RESULT_CANCELED) {text.append("(cancelled)");// Our protocol with the sending activity is that it will send// text in 'data' as its result.} else {text.append("(okay ");text.append(Integer.toString(resultCode));text.append(") ");if (data != null) {text.append(data.getAction());}}text.append("\n");}}// Definition of the one requestCode we use for receiving resuls.static final private int GET_CODE = 0;private OnClickListener mGetListener = new OnClickListener() {public void onClick(View v) {// Start the activity whose result we want to retrieve.  The// result will come back with request code GET_CODE.Intent intent = new Intent(ReceiveResult.this, SendResult.class);startActivityForResult(intent, GET_CODE);}};private TextView mResults;
}


我们需要为startActivityForResult传递一个Intent和一个请求码。

Intent决定启动哪个Activity。请求码是对子Activity标记的唯一ID。假如从一个父Activity中可能启动的子Activity有多个,那么通过请求码我们就可以知道是从哪个子Activity返回的。

 

2. 定义子Activity,SendResult.java。在这个Activity中我们通过setResult(RESULT_OK, (new Intent()).setAction("Corky!"))将结果返回给父Activity。
Java代码

package com.example.android.apis.app;import com.example.android.apis.R;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class SendResult extends Activity
{@Overrideprotected void onCreate(Bundle savedInstanceState){// Be sure to call the super class.super.onCreate(savedInstanceState);// See assets/res/any/layout/hello_world.xml for this// view layout definition, which is being set here as// the content of our screen.setContentView(R.layout.send_result);// Watch for button clicks.Button button = (Button)findViewById(R.id.corky);button.setOnClickListener(mCorkyListener);button = (Button)findViewById(R.id.violet);button.setOnClickListener(mVioletListener);}private OnClickListener mCorkyListener = new OnClickListener(){public void onClick(View v){// To send a result, simply call setResult() before your// activity is finished.setResult(RESULT_OK, (new Intent()).setAction("Corky!"));finish();}};private OnClickListener mVioletListener = new OnClickListener(){public void onClick(View v){// To send a result, simply call setResult() before your// activity is finished.setResult(RESULT_OK, (new Intent()).setAction("Violet!"));finish();}};
}


在调用finish()之前,要先调用setResult方法,将结果码和数据返回给父Activity。在android.app.Activity中定义两个标准结果码,RESULT_OK和RESULT_CANCELED。

如果子Activity启动失败或者没有显式的在setResult()中设置结果码,子Activity会默认返回RESULT_CANCELED。

3. 在父Activity中,我们重写onActivityResult(int requestCode, int resultCode,  Intent data)方法,接收子Activity返回的数据。参考1中的代码。

请求码(requestCode):通过它我们可以对多个子Activity进行处理。

结果码(resultCode):通过它我们可以判断子Activity的处理结果,对不同的结果码进行相应的操作。

这篇关于Android 2.2 API Demos -- 通过调用子Activity返回值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843552

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场