关闭

Android之activity中传递数据

标签: android
218人阅读 评论(0) 收藏 举报
分类:

Activtity中传递的数据有以下几种:

1、简单数据;

2、数据包(实现serializable和实现parcelable);

3、值对象;

我们创建两个activity,演示三种传递数据的方式:

1MainActivity:

 

Public class MainActivity extends AppCompatActivity{

 

Private Button btnStartAtv1;

Private TextView tvOut;

 

@Override

Protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

tvOut=(TextView)findViewById(R.id.tvoOut);

btnStartAtv1=(Button)findViewById(R.id.btnStartAtv1);

 

btnStartAtv1.setOnClickListener(newView.OnClickListener(){

@Override

Public void onClick(Viewv){

Intent I = newIntent(MainActivity.this,Atv1.class);

 

//1、传递简单数值

i.putExtra("txt","helloatv1");

startActivity(i);

 

//2、传递数据包

Bundledata=newBundle();

data.putString("title","helloatv1");

data.putInt("page",1);

i.putExtras(data);

startActivity(i)

 

//3.1、传递值对象(实现serializable)

i.putExtra("user",newUser("Ammy",21));

startActivity(i)

 

//3.2、传递值对象(实现parcelable)

i.putExtra("book",newBook("java",1));

startActivity(i);

 

/*获取传回的值包括下面的onActivityResult()方法*/

startActivityForResult(i,0);

 

}

});

 

System.out.println("MainonCreat");

}

 

//处理返回的值

Protected void onActivityResult(intrequestCode,intresultCode,Intentdata){

 

Stringresult=data.getStringExtra("result");

tvOut.setText("Atv1返回的数据是:"+result);

super.onActivityResult(requestCode,resultCode,data);

 

}

 

2Atv1

 

Public class Atv1 extendsMainActivity{

 

Private Button btnClose;

Private TextView tvOut;

Private EditText et;

 

@Override

Public void onCreate(BundlesavedInstanceState){

 

super.onCreate(savedInstanceState);

setContentView(R.layout.atv1);

 

btnClose=(Button)findViewById(R.id.btnClose);

tvOut=(TextView)findViewById(R.id.tvOut);

et=(EditText)findViewById(R.id.editText);

 

 //1、接收一个简单数值

 tvOut.setText(getIntent().getStringExtra("txt"));

 

 //2、接收数据包

 Bundle data = getIntent().getExtras();

 tvOut.setText(String.format("title=%s,page=%d,cont=%s",data.getString("title"),

           data.getInt("page"),data.getString("cont","first")));

 

 //3.1、接收值对象(实现serializable),user为包含name和age属性及setter、getter的基类

 User user = (User)getIntent().getSerializableExtra("user");

 tvOut.setText(String.format("userinfo(name=%s,age=%d)",user.getName(),

                 user.getAge()));

 

 //3.2、接收值对象(实现parcelable),book为包含name和id属性及setter、getter的基类

 Book book = getIntent().getParcelableExtra("book");

 tvOut.setText(String.format("bookinfo(name=%s,id=%d)",book.getName(),book.getId()));

 

/*从第二个activity中传回的值传值到前一个activity*/

btnClose.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

Intent I = newIntent();

i.putExtra("result",et.getText().toString());

setResult(0,i);

finish();

}

});

 

}

}

 

 

3Activty_main.xml:

 

<TextViewandroid:text="@string/hello_world"android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/tvoOut"/>

 

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="StartAtv1"

android:id="@+id/btnStartAtv1"

android:layout_below="@+id/tvoOut"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"/>

 

 

4Atv1.xml:

 

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="ThisisAtv1"

android:id="@+id/tvOut"/>

 

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="close"

android:id="@+id/btnClose"

android:layout_below="@+id/editText"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"/>

 

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/editText"

android:layout_below="@+id/tvOut"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true"/>















0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2238次
    • 积分:70
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:2篇
    • 评论:0条
    文章分类
    文章存档