android在 Activity 之间传递参数

1.点击一个按钮跳转到百度页面(或者另一个activity):

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btnStartAnotherAty).setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//startActivity(new Intent(MainActivity.this,AnotherAty.class));
				startActivity(new  Intent(Intent.ACTION_VIEW, Uri.parse("https://www.baidu.com/")));
			}
		});
        
    }
2.传递简单数据(点击按钮在另一个actity显示传入的数据):

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.startAnthorAty).setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent i= new Intent(MainActivity.this,AnotherAty.class);
		    	i.putExtra("data", "fc");
				startActivity(i);
		
			}
		});
    }
	
public class AnotherAty extends ActionBarActivity {
	private TextView tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_another_aty);
		Intent i= getIntent();
		
		tv = (TextView)findViewById(R.id.tv);
		tv.setText(i.getStringExtra("data"));
		
		
	}
3.传递Bundle数据包:

public class MainActivity extends ActionBarActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent i= new Intent(MainActivity.this,AnotherAty.class);
//				i.putExtra("data", "fc");
				Bundle b = new  Bundle();
				b.putString("name", "fc");
				b.putInt("age", 21);
//				b.putString("default", "默认值"); //如果传入有默认值此行可省
				i.putExtra("data",b);
				startActivity(i);
		
			}
		});
    }
	
public class AnotherAty extends ActionBarActivity {
	private TextView tv;
	@SuppressLint("NewApi")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_another_aty);
		Intent i= getIntent();
		Bundle data = i.getBundleExtra("data");
		tv = (TextView)findViewById(R.id.tv);
		tv.setText(String.format("name=%s,age=%d,default=%s", data.getString("name"),
				data.getInt("age"),data.getString("default","default")));//第三个参数含默认值
//		tv.setText(i.getStringExtra("data"));
	}	
	
4.传递类类型的数据

       4.1Serializable方式:

import java.io.Serializable;
import android.R.string;

public class User implements Serializable {
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	private String name;
	private int age;
	public User(String name,int age){
		this.name = name;
		this.age = age;		
	}
}

public class MainActivity extends ActionBarActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent i= new Intent(MainActivity.this,AnotherAty.class);				
				i.putExtra("user", new User("fc",21));
				startActivity(i);
			}
		});
    }
public class AnotherAty extends ActionBarActivity {
	private TextView tv;
	@SuppressLint("NewApi")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_another_aty);
		Intent i= getIntent();
		tv = (TextView)findViewById(R.id.tv);
		User user = (User) i.getSerializableExtra("user");
		tv.setText(String.format("User Info(name=%s,age=%d)",user.getName(),user.getAge() ));
	}
	
         4.2 Parcelable方式:

import android.os.Parcel;
import android.os.Parcelable;

public class User implements Parcelable {
	public User(String name, int age) {
		this.name= name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	private String name;
	private int age;
	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}
	@Override
	public void writeToParcel(Parcel dest, int flags) {
		// TODO Auto-generated method stub
		dest.writeString(getName());
		dest.writeInt(getAge());		
	}
	
	public static final Creator<User>  CREAT = new Creator<User>(){

		@Override
		public User createFromParcel(Parcel source) {
			// TODO Auto-generated method stub
			return new User(source.readString(),source.readInt());
		}
		@Override
		public User[] newArray(int size) {
			// TODO Auto-generated method stub
			return new User[size];
		}		
	};
}

public class MainActivity extends ActionBarActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent i = new Intent (MainActivity.this,AnotherAty.class);
				i.putExtra("user", new User("fc",21));
				startActivity(i);
			}
		});
	}
public class AnotherAty extends ActionBarActivity {

	private TextView tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_another_aty);
		Intent i=  getIntent();
		tv=  (TextView) findViewById(R.id.tv);
		User user= i.getParcelableExtra("user");
		tv.setText(String.format("User Info(name=%s,age=%d)",user.getName(),user.getAge() ));
	}
	




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值