3.在Activity之间传递参数

自闭症网瘾萝莉.ら 提交于 2020-01-23 20:55:40
  • 传递简单数据
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!

  • 传递值对象
  1. 使用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() ) );
  1. 使用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();
            }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!