关闭

Android之activity中传递数据

标签: android
266人阅读 评论(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
查看评论

Android 学习之路一:Activity之间传递数据的四种方式

传递数据 新建 Activity 在项目中右键,选择 New,继续选择中下方的 Activity,最后是 Blank Activity。此时 Android Studio 会为我们自动添加一个对应的布局文件,为布局文件中的 TextView 添加 ID,以便后续使用。 用Intent 发送数据 在主...
  • NoMasp
  • NoMasp
  • 2015-10-11 00:40
  • 5547

android数据传递(三)之Activity传递到Fragment

其实Activity和fragment之间传递数据有很多方法,我这里说一个用的比较多的一个方法——接口回调,后面有运行效果 接口回调有几个步骤: 1,要传递数据的类A里面定义一个接口X,接口里面创建一个构造方法,方法里面的参数就是你要传递的数据类型 2,创建一个公共的方法Y,方法里的参数就是你创建的...
  • dl10210950
  • dl10210950
  • 2016-08-17 20:28
  • 8292

android数据传递(一)之activityA传递到activityB

activity之间单传递也就是activityA传递到activityB携带数据传递有两种 方式: 1.activityA通过intent.putExtra(key,value); 可以传递很多类型,看下图 在activityB根据你传递数据的类型通过getExtra()接收 例如 S...
  • dl10210950
  • dl10210950
  • 2016-07-30 14:20
  • 13028

【Android 开发】 : Activity之间传递数据的几种方式

在Android开发中,我们通常需要在不同的Activity之间传递数据,下面我们就来总结一下在Activity之间数据传递的几种方式。 1. 使用Intent来传递数据 Intent表示意图,很多时候我们都会利用Android的Intent来在各个Activity之间传递数据,这也...
  • fd27132981
  • fd27132981
  • 2014-01-16 21:17
  • 1568

android 中Service 和activity之间的数据传递的几种方法

1、原始数据类型:        在Activity/Servier之间传递临时性的原始数据,可以使用Intent的putExtras方法来传递数据。若传递的数据需要长久保存,则使用SharedPreference类来完成。 2、传递对象。 &...
  • huagjie
  • huagjie
  • 2015-11-03 20:10
  • 1475

Android中用Bundle在Activity间传递数据

用Bundle在A中传递数据的一个小例子 要编辑的文件如下 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l...
  • wu_wxc
  • wu_wxc
  • 2015-11-18 15:49
  • 2539

两个Activity之间通过Intent相互(双向)传递数据

两个Activity通过Intent相互交换数据,在Activity中用一个Button 选择是否接受数据,不能直接写在onCreate中否则在Activity1 中获取从Activity2发送的数据时会崩溃,原因是因为在Activity中会通过Intent再创建一个Activity1的界面 而Ac...
  • fuckluy
  • fuckluy
  • 2016-03-19 22:23
  • 1483

Android 两个Activity之间传递数据及返回

从Activity1带参数跳转到Activity2这个经常用到,比较熟悉,但如何从Activity2将数据返回给Activity1呢?这个其实也不麻烦,动手敲一下就知道了。 Activity1代码:public class MainActivity extends ActionBarActiv...
  • zhang070514
  • zhang070514
  • 2016-03-22 16:52
  • 1929

Android中在两个Activity之间进行数据传递

大家好,今天我终于开通了自己的博客,很开心能和大家共同分享我的学习经验,希望我们可以共同进步哦,废话不多说了,看一下我今天学习android遇到的一些问题和解决办法吧       首先先把我使用的eclipse的版本贴出来:adt-bundle-windows-x86-...
  • u013095688
  • u013095688
  • 2013-12-09 20:59
  • 1396

Android基础之Activity系列 - Activity间的数据传递

Activity间的数据传递总结: Intent:(数据传递的灵魂) Android的应用程序包含三种重要组件:Activity、Service、BroadcastReceiver,应用程序采用一致的方式来启动他们——都是依靠Intent来启动的,Intent封装了程序想要启动的程序的意图。 1.使...
  • pangrongxian
  • pangrongxian
  • 2015-12-03 21:51
  • 2401
    个人资料
    • 访问:2508次
    • 积分:72
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:2篇
    • 评论:0条
    文章分类
    文章存档