如何在Android开发中activity之间数据传递

2024-12-14 10:55:32
推荐回答(3个)
回答1:

android各组件之间可以使用Intent来传递数据, 这里以ActivityA向ActivityB传递数据为例

Intent intent = new Intent(context, ActivityB.class);

//如果context上下文不是Activity的话, 需要添加下面这个flag,
if (!(context instanceof Activity)) {
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
//添加要传递的数据
//这里的key到时候ActivityB会用来得到value
//android要求可以传递的数据类型包括基本数据类型,
//基本数据类型的数组,CharSequence,以及实现了Parcelable的对象
//putExtra是重载方法, 根据value的类型会适当的打包进intent的Bundle对象里
intent.putExtra(key, value);
//或则将数据打包进Bundle data里, 然后intent.putExtras(data);

context.startActivity(intent);

在ActivityB中

public void onCreate(Bundle savedInstanceState) {
    //得到传递过来的数据
    Bundle bundle = getIntent().getExtras();
    //通过getXXX方法来获取key对应的value
    bundle.getXXX(key);
}

回答2:

//方式就是Intent或者Intent+Bundle

Intent intent = new Intent(第一个activity.this,第二个activity.class);
//数据少的时候可以直接用 intent.putExtra()的形式传
//数据多的时候
Bundle bundle = new Bundle()
bundle.putXXX(键,值);//XXX表示的是数据类型String 、Int、Serializable、Parcelable等等
startActivity(intent);

//相应的在第二个activity里
Intent intent = getIntent();
//然后取值就可以:
Bundle = bundle = intent.getExtras();
//....取值就行了

//只是Serializable、Parcelable这类是为了传Object时采用的,你可以自行百度如何利用bundle传递Object

//另外还有startActivityForResult(intent)和startActivity(intent)的区别,后者仅仅从一个activity跳到另一个,单向传递数据,前者则是可以双向传递数据~

回答3:

发送数据

Intent intent = new Intent();
intent.putExtra(name,value);
接受数据
Intent intent=getIntent();
String s=intent.getStringExtra("name");