Android_Bundle传回数据_141005

bundle传递数据,是作为一个载体传递的.

bundle中储存数据,然后,由Intent运载到另外的Activity中 . 

接下来, 介绍一下bundle传递数据,并且由另外一个Activity传递回数据

 不多说, 直接上代码;

  // first.java

package com.yline.bundleback;

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;
import android.widget.EditText;
import android.widget.TextView;

public class first extends Activity{
	private final static int REQUEST_CODE=1; 
	private EditText et_send;
	private TextView tv_back;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.first);

		et_send = (EditText) findViewById(R.id.et_send);
		Button btn_jump = (Button) findViewById(R.id.btn_jump);
		tv_back = (TextView) findViewById(R.id.tv_back);

		//建立跳转的 intent
		btn_jump.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent myIntent = new Intent();
				Bundle myBundle = new Bundle();
				myBundle.putString("send", et_send.getText().toString().trim());

				myIntent.setClass(first.this, second.class);
				myIntent.putExtras(myBundle);
				startActivityForResult(myIntent, REQUEST_CODE);
			}
		});
	}

	//得到传回的bundle数据
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if (requestCode==REQUEST_CODE)  
		{  
			if (resultCode==second.RESULT_CODE)
			{
				Bundle bundle = data.getExtras();
				String datas = bundle.getString("back");
				String str = bundle.getString("send");
				tv_back.setText(datas + str);
			}  
		} 
	}
}
  // first.xml

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

    <EditText
        android:id="@+id/et_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/btn_jump"
        android:hint="请输入传出的数据" >

        <requestFocus />
    </EditText>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/tv_back"
        android:layout_alignParentLeft="true"
        android:text="数据前加了yline" />

    <TextView
        android:id="@+id/tv_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="等待传回的数据"
        android:textSize="30sp" />

    <Button
        android:id="@+id/btn_jump"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="跳转" />

</RelativeLayout>
   //second.java

package com.yline.bundleback;

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;
import android.widget.TextView;

public class second extends Activity {
	public final static int RESULT_CODE = 1;
	private String data;
	private Bundle bundle;
	private TextView tv_get;

	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		
		tv_get = (TextView) findViewById(R.id.tv_get);
		Button btn_back = (Button) findViewById(R.id.btn_back);
		
		//得到传过来的数据,并且显示出来
		bundle = getIntent().getExtras();  

		data = bundle.getString("send");
		tv_get.setText(data);
		
		//点击返回处理后的数据值
		btn_back.setOnClickListener(new OnClickListener(){  
			@Override  
			public void onClick(View v) {  
				Intent intent = new Intent();
				bundle.putString("back","yline"+data);
				intent.putExtras(bundle);
			//	intent.putExtra("back", "yline"+data);
				setResult(RESULT_CODE, intent);
				finish();
			}  
		});  
	}
}

  //second.xml

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

    <TextView
        android:id="@+id/tv_get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:textSize="30sp"
        android:text="接收的数据" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btn_back"
        android:layout_alignParentLeft="true"
        android:text="处理为:在原先字符串前加上:“yline”" />
    
    <Button
        android:id="@+id/btn_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="传回处理后的值" />

</RelativeLayout>
   // 权限文件
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.yline.bundleback.first"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity 
            android:name="com.yline.bundleback.second">
        </activity>
    </application>

本程序功能,
1)  由first 输入数据 , 通过调用 Intent 使用bundle传递数据到 second

2)  在second中 , 显示 first 中输入的数据; 点击返回按钮 (并且, 将数据, 之前加了 "yline")

3) 在first中, 显示 处理后的数据


注意点:

1) 在 first.java中, 新建第一个Intent, 并且新建Bundle 传输数据.  但是, 传回来的时候, 是通过 OnActivityResult传递数据的.

 但在seconde.java中, 新建了一个BackIntent 但是, 使用的bundle还是 first.java中建立的bundle;  因此, 输出的时候, 会有 "yline" + "输入的数据" + "输入的数据"


2) first.java文件中 的 OnActivityResult方法 中的三个参数:

 RequestCode --> 在first文件中, 自己定义的数值

ResultCode  --> 在second文件中, 自己定义的数值

Intent --> 传递回的 Intent

有了 RequestCode 和 ResultCode 就可以 多个源Activity 和 多个目标Activity 相互调用服务, 而不会出现混乱


图:



BundleBack下载链接 :  (可运行)
http://pan.baidu.com/s/1i3gOy0X

参考网址:

http://blog.csdn.net/cndrip/article/details/7191381














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值