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

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





 


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值