在两个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中注释掉的 方法二 即可。
|