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