[Android]1-activity传递参数

1.传递简单的参数,主要就是在第一个activity中:

  建立intent

  intent对象i.putExtra("data","Hello Jiaojiao");


activityA中:

 @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(MyActivity.this,TheAty.class);
//                i.putExtra("data","Hello Jiaojiao");//传递简单数据

                //传递bundle
                Bundle b = new Bundle();
                b.putString("name","para1");
                b.putInt("age",2);
                i.putExtras(b);

                startActivity(i);
            }

        });
    }

activityB中:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_the_aty);

        Intent i =getIntent();
        Bundle data = i.getExtras();


        tv = (TextView) findViewById(R.id.tv);
        //tv.setText(i.getStringExtra("data"));//简单参数
        //bundle参数
        tv.setText(String.format("name=%s,age=%d",
                data.getString("name"),data.getInt("age")));
    }



2.传递值对象:主要是通过android的parcelable接口实现序列化。

public class User implements Parcelable{
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User(String name,int age){
        this.name = name;
        this.age = age;

    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(getName());
        parcel.writeInt(getAge());
    }

    public static  final  Creator<User> CREATOR = new Creator<User>() {
        @Override
        public User createFromParcel(Parcel parcel) {//通过parcel创建对象
//            parcel.writeBundle();//可以传递多个同类对象
            return new User(parcel.readString(),parcel.readInt());
        }

        @Override
        public User[] newArray(int i) {
            return new User[0];
        }
    };
}

package test.com.asdevtest;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;


public class MyActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = "test.com.asdevtest.MESSAGE";

    @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(MyActivity.this,TheAty.class);

                //传递值对象
                i.putExtra("user",new User("mo",18));

                startActivity(i);
            }

        });
    }


}

public class TheAty extends AppCompatActivity {

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_the_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()));
    }


3.activity传递返回参数。

主要是:

activity A中,将startActivity改为startActivityForResult(i,0);

并重写onActivityResult


activity B中:为返回bin设置findViewById(R.id.button).setOnClickListener


public class MyActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = "test.com.asdevtest.MESSAGE";
    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView =  (TextView) findViewById(R.id.textView);//回传的txetview

        findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Intent i = new Intent(MyActivity.this,TheAty.class);


                //传递值对象
                i.putExtra("user",new User("mo",18));

                startActivityForResult(i,0);
            }

        });
    }

    //根据返回的code来判断结果
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        textView.setText("另一个activity返回的结果是:"+data.getStringExtra("data"));
    }

}

public class TheAty extends AppCompatActivity {

    private TextView tv;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_the_aty);

        Intent i =getIntent();
        tv = (TextView) findViewById(R.id.tv);
        editText = (EditText)findViewById(R.id.editText);
//        Bundle data = i.getExtras();
//
//

//        //tv.setText(i.getStringExtra("data"));//简单参数
//        //bundle参数
//        tv.setText(String.format("name=%s,age=%d",
//                data.getString("name"),data.getInt("age")));

        User user = i.getParcelableExtra("user");
        tv.setText(String.format("User info(name=%s,age=%d",user.getName(),user.getAge()));

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent i = new Intent();
                i.putExtra("data",editText.getText().toString());
                setResult(1,i);
                finish();//结束当前activity
            }
        });



    }
}
第一个layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnStartAty"
        android:text="启动另一个activity"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"/>

</LinearLay



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="test.com.asdevtest.TheAty">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="send back"/>

</LinearLayout>



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值