- 传递简单数据
findViewById( R.id.startactivity ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent( MainActivity.this,Main2Activity.class );
i.putExtra( "data","hello world" );
startActivity( i );
}
} );
Intent i=getIntent();
textView=findViewById( R.id.textView );
textView.setText( i.getStringExtra( "data" ) );
- 传递数据包Bundle
public void onClick(View v) {
Intent i=new Intent( MainActivity.this,Main2Activity.class );
// i.putExtra( "data","hello world" );
Bundle b=new Bundle();
b.putString( "name","lydia" );
b.putInt("age",12);
i.putExtras(b);
startActivity( i );
}
setContentView( R.layout.activity_main2 );
Intent i=getIntent();
Bundle data=i.getExtras();
textView=findViewById( R.id.textView );
// textView.setText( i.getStringExtra( "data" ) );
textView.setText( String.format( "name=%s age=%s name1 =%s ",data.getString( "name"),data.getInt( "age" ) ,data.getString( "name1","null" )) );
Bundle需要用Extras!
- 传递值对象
- 使用Serializable
public class User implements Serializable {
public void onClick(View v) {
Intent i=new Intent( MainActivity.this,Main2Activity.class );
i.putExtra("data",new User("hello",12));
startActivity( i );
}
Intent i=getIntent();
textView=findViewById( R.id.textView );
User user= (User) i.getSerializableExtra( "data" );
textView.setText( String.format( "name=%s,age=%d",user.getName(),user.getAge() ) );
- 使用Parcelable
public class User implements Parcelable {
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString( getName() );
dest.writeInt( getAge() );
}
public static final Creator<User> CREATOR=new Creator<User>() {
@Override
public User createFromParcel(Parcel source) {
return new User( source.readString(),source.readInt() );
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
}
User user=i.getParcelableExtra( "data" );
textView.setText( String.format( "name=%s,age=%d",user.getName(),user.getAge() ) );
- 获取activity的返回参数
public void onClick(View v) {
Intent i=new Intent( MainActivity.this,Main2Activity.class );
textView=findViewById( R.id.textView2 );
// startActivity( i );
startActivityForResult(i,0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult( requestCode, resultCode, data );
textView.setText( "返回的数据是:"+data.getStringExtra( "data" ) );
}
public void onClick(View v) {
Intent i=new Intent();
i.putExtra( "data",editText.getText().toString());
setResult( 1,i );
finish();
}
来源:CSDN
作者:未来未来14
链接:https://blog.csdn.net/qq_41564875/article/details/104075821