Android在第1个活动(Activity)中打开第2个活动并传递参数(值)

1、第一个活动MainActivity.java

package com.t20.activitydemo;

import com.t20.activitydemo.R.string;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private EditText etName;
	
	/**
	 * 活动在被系统回收时调用,用于临时保存数据
	 */
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		// TODO Auto-generated method stub
		super.onSaveInstanceState(outState);
		String str="我觉得我还可以抢救一下!";
		outState.putString("data", str);
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//输入框
		etName=(EditText) findViewById(R.id.etName);
		
		Log.w("生命周期", "onCreate");
		
		//判断是否有临时保存的数据,有就加载出来
		if(savedInstanceState!=null){
			//获取保存的值
			String data=savedInstanceState.getString("data");
			Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show();
		}
	}	
	
	/**
	 * 启动第二个活动
	 */
	public void start2(View v){
		//1、准备意图(想要)
		Intent intent=new Intent(MainActivity.this, SecondActivity.class);
		//-----------------------------起点-----------------终点---------		
		//2、传值
		String name=etName.getText().toString();
		intent.putExtra("name", name);//第一个参数是key键,第二个是值				
		//3、出发
		// (单程)
		startActivity(intent);		
		// (往返)
		startActivityForResult(intent, 2);
		//----------------------意图---请求码
	}
	/**
	 * 启动第三个活动
	 */
	public void start3(View v){
		//1、准备意图(想要)
		Intent intent=new Intent(MainActivity.this, ThirdActivity.class);
		//-----------------------------起点-----------------终点--------		
		//2、出发(往返)
		startActivityForResult(intent, 3);
		//----------------------意图---请求码
	}
	/**
	 * 启动第四个活动
	 */	 
	 /*
	 注意了:第四个活动需要在AndroidManifest.xml清单文件中添加<intent-filter>设置,内容如下:
		<activity
            android:name="com.t20.activitydemo.FourthActivity"
            android:label="@string/title_activity_fourth" >
            <intent-filter>
                <action android:name="android.xxx.ooo"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <!-- 把con.xxx.ooo设置为系统默认的一个动作 -->
            </intent-filter>
        </activity>
	 */
	public void start4(View v){
		//使用隐式启动,调用自定义的动作android.xxx.ooo
		Intent intent=new Intent("android.xxx.ooo");
		startActivity(intent);
	}
	/**
	 * 拨打电话
	 * @param v
	 */
	public void call(View v){
		//使用隐式启动,调用系统的动作拨打电话
		Intent intent=new Intent(Intent.ACTION_DIAL);
		intent.setData(Uri.parse("tel:10086"));
		startActivity(intent);
	}
	
	/**
	 * requestCode 请求码
	 * resultCode  响应码
	 * data        意图
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub	
		if(requestCode==2){
			switch (resultCode) {
			case 201:
				//获取返回的参数
				String data1=data.getStringExtra("data1");
				Toast.makeText(MainActivity.this, data1, Toast.LENGTH_SHORT).show();
				break;
			case 202:
				//获取返回的参数
				String data2=data.getStringExtra("data2");
				Toast.makeText(MainActivity.this, data2, Toast.LENGTH_SHORT).show();
				break;
			}
		}else if(requestCode==3){
			switch (resultCode) {
			case 301:
				//获取返回的参数
				String data1=data.getStringExtra("data1");
				Toast.makeText(MainActivity.this, data1, Toast.LENGTH_SHORT).show();
				break;
			case 302:
				//获取返回的参数
				String data2=data.getStringExtra("data2");
				Toast.makeText(MainActivity.this, data2, Toast.LENGTH_SHORT).show();
				break;
			}
		}
		
		super.onActivityResult(requestCode, resultCode, data);
	}

}

2、第二个活动SecondActivity.java

package com.t20.activitydemo;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class SecondActivity extends Activity {

	private TextView tvContent;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		//文本
		tvContent=(TextView) findViewById(R.id.tvContent);	
		//获取意图传过来的值
		String name=getIntent().getStringExtra("name");//参数为传值活动设定的key键	
		tvContent.setText(name);
	}
	/**
	 * 第一种情况
	 * @param v
	 */
	public void back1(View v){
		//使用意图把参数传回前一个活动
		Intent intent=new Intent();
		intent.putExtra("data1", "我是第1种 情况!");
		setResult(201, intent);
		//-------响应码--意图
		finish();//完成,销毁活动
	}
	/**
	 * 第二种情况
	 * @param v
	 */
	public void back2(View v){
		//使用意图把参数传回前一个活动
		Intent intent=new Intent();
		intent.putExtra("data2", "我是第2种 情况!");
		setResult(202, intent);
		//-------响应码--意图
		finish();//完成,销毁活动
	}
}

猜你喜欢

转载自blog.csdn.net/qq15577969/article/details/80704690