android 打电话传参,Android学习之Activity传参(示例代码)

一、传参的三种方法

场景分两步:

1、从第一个Activity传递参数到第二个Activity,接受并显示。

2、第二个Activity文本框输入信息,并传到第一个Activity。

传参前需要先定义Intent

Intent i=new Intent(MainActivity.this,TheAty.class);//参数一当前Activity,参数二跳转Activity

传参的集中方法

1、putExtra

类似是键值对,第二个参数可以传不同类型的值

2b42e2cc4c6445b62b6485e2131b302a.png

a)赋值

i.putExtra("data","Hellow,zhangsan");

b)取值

i.getStringExtra("data")

2、使用Bundle

根据类型不同使用不同的put方法

3f561295b0c90cb64c69ee16e7fd131c.png

a)赋值

Bundle b=newBundle();

b.putString("name","hello,张三");

i.putExtras(b);

b)取值:

Bundle data=i.getExtras();

data.getString("name");

3、使用对象

a)定义一个User对象,包含name和age属性

public class User implementsParcelable{privateString name;private intage;public intGetAge(){return this.age;

}public void SetAge(intage){this.age=age;

}publicString GetName(){return this.name;

}public voidSetName(String name){this.name=name;

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

}

@Overridepublic intdescribeContents() {return 0;

}

@Overridepublic void writeToParcel(Parcel dest, inti) {

dest.writeString(GetName());

dest.writeInt(GetAge());

}public static final Creator CREATOR=new Creator() {

@OverridepublicUser createFromParcel(Parcel source) {return newUser(source.readString(),source.readInt());

}

@Overridepublic User[] newArray(intsize) {return newUser[size];

}

};

}

这里采用Android的Parcelable序列号接口,重写describeContents和writeToParcel方法,定义常量CREATOR。当然也可以用Java的Serializable接口,实现代码更少。

b)传参

i.putExtra("user",new User("zhangsan",18));

c)取值

User u=(User)i.getParcelableExtra("user");

tv.setText(String.format("User info(name=%s,age=%d)",u.GetName(),u.GetAge()));

二、实现的代码和步骤:1、先定义第一个Activity

加上button和TextView

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

android:text=""android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/textView" />

2、第一个Activity后代码台实现

public class MainActivity extendsAppCompatActivity {private TextView textView;//定义TextView

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView=(TextView)findViewById(R.id.textView);//根据ID获得TextView对象

findViewById(R.id.btnStartAty).setOnClickListener(newView.OnClickListener(){

@Overridepublic voidonClick(View view) {

Intent i=new Intent(MainActivity.this,TheAty.class);

i.putExtra("user",new User("zhangsan",18));

startActivityForResult(i,0);

}

});

}

@Overrideprotected void onActivityResult(int requestCode, intresultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);

textView.setText("返回的数据:"+data.getStringExtra("data"));

}

}

这里需要注意的有点

1)获得元素是根据元素ID  findViewById(R.id.textView);

2)给Button绑定点击事件:setOnClickListener(newView.OnClickListener(){}

3)要想获取第二个Activity返回的值,需要重写onActivityResult方法

3、第二个Activity页面

定一个TextView用于显示接受第一个传来的值;定义一个EditText,写入值;定义一个Button;

android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!" android:id="@+id/tv"/>

android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="textPersonName"android:text="Name"android:ems="10"android:id="@+id/editText" />

android:text="Send Back"android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/button" />

4、第二个Activity后台代码实现

public class TheAty extendsAppCompatActivity {privateTextView tv;privateEditText editText;

@Overrideprotected voidonCreate(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);

User u=(User)i.getParcelableExtra("user");//获取传入的User对象

tv.setText(String.format("User info(name=%s,age=%d)",u.GetName(),u.GetAge()));//显示到TextView

findViewById(R.id.button).setOnClickListener(newView.OnClickListener(){//定义Button点击事件

@Overridepublic voidonClick(View view) {

Intent i=newIntent();

i.putExtra("data",editText.getText().toString());

setResult(1,i);

finish();

}

});

}

}

运行下,大功告成。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值