Activity中startActivityForResult()的连续调用

MainActivity如下:

package cn.teststartactivityforresult;

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;
/**
 * Demo描述:
 * 测试startActivityForResult的连续调用
 *
 */
public class MainActivity extends Activity {
    private Button mButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
	/**
	 * 注意:
	 * startActivityForResult(intent, requestCode)方法的参数
	 * requestCode表示本次startActivityForResult操作的请求码
	 * 因为在同一个Activity中根据业务的不同需要多次执行startActivityForResult
	 * 所以为了区分每次startActivityForResult的操作为其设置一个
	 * requestCode
	 */
    private void init(){
    	mButton=(Button) findViewById(R.id.first_button);
    	mButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				Intent intent=new Intent(MainActivity.this, SecondActivity.class);
				startActivityForResult(intent, 123);
			}
		});
    }
    /**
     * 注意:
     * onActivityResult(int requestCode, int resultCode, Intent data)方法的参数
     * 同上面的描述背景既然有不同的startActivityForResult操作,那么这些不同的操作
     * 当然有不同的返回值.所以用resultCode来标识了不同的结果
     * 所以可以根据requestCode和resultCode来共同进行业务判断
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	super.onActivityResult(requestCode, resultCode, data);
    		if (requestCode==123&&resultCode==7) {
    			System.out.println("第一个Activity关闭  得到返回数据为:"+data.getStringExtra("test"));
    			finish();
    		}
    }

}

SecondActivity如下:

package cn.teststartactivityforresult;

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 SecondActivity extends Activity {
    private Button mButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.secondactivity);
		init();
	}
    private void init(){
    	mButton=(Button) findViewById(R.id.second_button);
    	mButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				Intent intent=new Intent(SecondActivity.this, ThirdActivity.class);
				startActivityForResult(intent, 9527);
			}
		});
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	super.onActivityResult(requestCode, resultCode, data);
    	if (resultCode==9527) {
			System.out.println("第二个Activity关闭  得到返回数据为:"+data.getStringExtra("test"));
			setResult(7, data);
			finish();
		}
    }

}

ThirdActivity如下:

package cn.teststartactivityforresult;

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 ThirdActivity extends Activity {

    private Button mButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.thirdactivity);
		init();
	}
    private void init(){
    	mButton=(Button) findViewById(R.id.third_button);
    	mButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				System.out.println("第三个Activity关闭");
				Intent data=new Intent();
				data.putExtra("test","hello");
				setResult(9527, data);
				finish();
			}
		});
    }
}

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <Button
        android:id="@+id/first_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第一个Activity"
        android:layout_centerInParent="true"
    />

</RelativeLayout>

 

secondactivity.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <Button
        android:id="@+id/second_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第二个Activity"
        android:layout_centerInParent="true"
    />

</RelativeLayout>

 

thirdactivity如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >

    <Button
        android:id="@+id/third_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="关闭该Activity"
        android:layout_centerInParent="true"
    />

</RelativeLayout>

 

时间: 2024-07-28 17:53:04

Activity中startActivityForResult()的连续调用的相关文章

timesetevent windows-在一个进程中,连续调用函数timeSetEvent,定时器会不会有冲突

问题描述 在一个进程中,连续调用函数timeSetEvent,定时器会不会有冲突 1.调用函数timeSetEvent创建一个定时器A,每隔1000MS,进入回调函数发送一堆数据 2.调用函数timeSetEvent创建一个定时器B,每隔50MS,进入回调函数发送一堆数据 那么,如果在定时器A,在回调函数正在发送数据期间,定时器B也到时了,那么该怎么处理? 我自己试验了下,就不会在处理定时器B了,那么这个问题该怎么解决啊.

Android编程之Activity中onDestroy()调用分析_Android

本文分析了Android编程之Activity中onDestroy()调用方法.分享给大家供大家参考,具体如下: 刚刚一个BUG让我发现,如果 activity 实现了一个回调接口,然后使用 this 设置给需要回调接口的方法,这种应用场景比较常见,最常见的就是实现 onClickListener 接口,然后 findViewById().setOnClickListenr(this) 如果,这个回调接口设置到了一个静态对象(单例模式),当 activity finish() 的时候(按返回键,

button-从另外的 activity 中调用按钮

问题描述 从另外的 activity 中调用按钮 如何从另外一个 activity 中编辑一个按钮?它返回的是: java.lang.IllegalStateException: Could not execute method of the activityCaused by: java.lang.NullPointerException 但是我想在 Button getButton = (Button)findViewById(R.id.buttonGet);获取 getButton.set

android-Android中在activity中调用service中的某个对象的方法

问题描述 Android中在activity中调用service中的某个对象的方法 Android中在activity中如何调用service中的某个对象的方法!大神求助或者说如何在activity中获取到service中的某个对象! 解决方案 你这个问题问的有些问题啊,activity中获取到service中的某个对象!估计就是调用Service的方法吧,为Service写构造方法,New出Service对象后调用,或者直接写成静态方法直接用类名调用,再或者写接口,怎么调用都可以啊,和工具类调

textview-一个Activity创建数据库,另一个Activity中调用数据库并用TextView显示

问题描述 一个Activity创建数据库,另一个Activity中调用数据库并用TextView显示 第一个Activity(创建数据库): Db db = new Db(this); SQLiteDatabase dbWrite = db.getReadableDatabase(); ContentValues cv = new ContentValues(); cv.put("name", "小张"); cv.put("sex", "

【Android】Intent介绍及Intent在Activity中的使用方法

本篇博文主要介绍Intent的相关概念,以及Intent在Activity中的使用方法.   1.Intent的实现过程 在Android中,Intent不仅可用于应用程序之间的交互,也可用于应用程序内部的Activity/Service之间的交互. Intent负责对应用中一次操作进行描述,描述内容包括动作以及动作所涉及的数据,Android中的Intent机制则根据此描述,找到对应的组件,将Intent传递给该被调用组件,完成对组件的一次调用. 这便是Intent的实现过程,可见,在Inte

Android的Fragment中onActivityResult不被调用的解决方案(绝对管用)

常见的,我们会在FragmentActivity中嵌套一层Fragment使用,甚至Fragment下层层嵌套使用.这个时候,在第二级或者更深级别的Fragment将无法收到onActivityResult回调,查看FragementActivity的源码发现: public void startActivityFromFragment(Fragment fragment, Intent intent, : int requestCode) { : if (requestCode == -1)

Android学习笔记--Activity中使用Intent传值示例代码_Android

Intent,又称为意图,是一种运行时绑定机制,它能在程序运行的过程中链接两个不同的组件(Activity.Service.BroadcastReceiver).通过Intent,程序可以向Android表达某种请求或意愿,Android会根据意愿的内容选择适当的组件来请求. 在这些组件之间的通讯中,主要是由Intent协助完成的.Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,

android-onActivityResult中的数据如何拿出来在Activity中使用

问题描述 onActivityResult中的数据如何拿出来在Activity中使用 我想把里onActivityResult中文件的地址传出来给按钮点击响应里面的文件上传用但是发现不行,求大神解答一下 Btu_shangchuan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_GET_