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

来源:互联网 发布:淘宝代销物流怎么设置 编辑:程序博客网 时间:2024/06/03 01:01

在两个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() {@Overridepublic 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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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中注释掉的 方法二 即可。





 


0 0