您的位置:首页 > 移动开发 > Android开发

android使用Intent传递数据 2 种方式(Intent和Bundle)

2014-03-24 14:43 706 查看
在两个Activity之间传递数据,最终都是通过Intent传递,但设置数据和保存数据方式有两种(使用Intent 和 Bundle),分别对应如下:

设置数据(MainActivity.java)

方法一:1.直接用intent.putExtra("name","Nicole")

                  Intent intent = new Intent(MainActivity.this,OtherActivity.class);

                  intent.putExtra("name", "Nicole");

                  intent.putExtra("age", 25);

                  intent.putExtra("address", "Shenzhen");

方法二:2.用bundle.putString("name","Nicole") ;

                  Intent intent = new Intent(MainActivity.this,OtherActivity.class);

                  Bundle bundle = new Bundle();

                  bundle.putString("name", "Ben");

                  bundle.putInt("age", 28);

                  bundle.putString("address", "China");

                  intent.putExtras(bundle);     //将bundle传入intent中。

读取数据 (OtherActivty.java)

方法一:直接用Intent ,  String nameString = intent.getStringExtra("name");

             Intent intent = getIntent();

             String nameString = intent.getStringExtra("name");

             int age = intent.getIntExtra("age",0);

             String addressString = intent.getStringExtra("address");

方法二:用bundle , String nameString = bundle.getString("name");

             Intent intent = getIntent();

             Bundle bundle = intent.getExtras();

             String nameString = bundle.getString("name");

             int age = bundle.getInt("age");

             String addressString = bundle.getString("address");

---------------------------------------------------------------------------------------------------------------------------------------------

示例一效果图: 直接用Intent设置和读取数据





关键步骤一:MainActivity.java , 通过方法一,即直接用Intent传递数据

package com.android.myapp;

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

public class MainActivity extends Activity {

private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

//方法一:直接用Intent传数据
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
intent.putExtra("name", "Nicole");
intent.putExtra("age", 25);
intent.putExtra("address", "Shenzhen");

//方法二,用Bundle传数据
/*
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", "Ben");
bundle.putInt("age", 28);
bundle.putString("address", "China");
intent.putExtras(bundle);
*/

startActivity(intent);

}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


关键步骤二:OtherActivity.java , 通过方法一,即 用Intent直接读取传递的数据

package com.android.myapp;

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

public class OtherActivity extends Activity {

private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);

textView = (TextView)findViewById(R.id.msg);

//方法一:直接用intent获取 intent 中传递的数据

Intent intent = getIntent();
String nameString = intent.getStringExtra("name");
int age = intent.getIntExtra("age",0);
String addressString = intent.getStringExtra("address");

//方法二:用bundle获取 intent 中传递的数据
/*
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String nameString = bundle.getString("name");
int age = bundle.getInt("age");
String addressString = bundle.getString("address");
*/

String personInfo = "Dear , my love ~"+"\n"+"Name-->>"+nameString+"\n"+"Age-->>"+age+"\n"+"Address-->>"+addressString;
textView.setText(personInfo);
}

}


----------------------------------------------------------------------------------------------------------------------

示例二效果图: 直接用bundle设置和读取数据。关键代码跟上面一样,只要使用以上两个Activity中注释掉的 方法二 即可。





 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Intent Bundle
相关文章推荐