andriod activity 之间的传值的几中方法,你知道几种?

andriod activity 之间的传值的几中方法,你知道几种?

andriod activity 之间的传值的几中方法,你知道几种?

今天总结几种Android中activity传值的几种方式,看看有没有遗漏的,欢迎大家补充。

1、intent传值

ActivityA 传值

Intent intent = new Intent();
intent.putExtra("name", "bfw");
intent.putExtra("age", 50);
intent.putExtra("IQ", 200.0f);
intent.setClass(MainActivity.this, SecondActivity.class);
MainActivity.this.startActivity(intent);

ActivityB 接受

Intent intent = getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 0);
float IQ = intent.getFloatExtra("IQ", 0.0f);
textview2.setText("name:"+name+",age:"+age+",IQ:"+IQ);

注意:如果传对象的话,对象类要实现Parclelable接口

2、全局对象Application传值

自定义一个类MyApp继承Application 并重写它的onCreate()方法,将需要传递的值以成员变量的方式定义在MyApp 类中并提供getter和setter函数

在功能清单文件中指定自定义的全局应用程序application节点中指定android:name=".MyApp"

在MainActivity 中得到自定义的Appllication类型的子类对象MyApp类型的对象

ActivityA 传值

MyApp myApp=(MyApp)this.getApplication();
myApp.setName("xxx");
myApp.setAge(20)
myApp.setDog(dog);

ActivityB 接受
MyApp myApp=(MyApp)this.getApplication();
xxx=myApp.getName()
age=myApp.getAge()
dog=myApp.getDog()

3、startActivityForResult传值

调用流程:
主界面A里面启动购买界面B,也就是在A里面调用startActivityForResult
B界面中完成购买后,使用setResult将2000的结果保存,该结果会随着B调用finish自动返回给A
A界面onActivityResult方法会在B调用finish时被自动回调,接收B里面的参数,然后进行数据操作。
该方法无差别接收所有使用startActivityForResult启动的界面finish时返回的值。通过参数区分每个不同的startActivityForResult

ActivityA 传值

startActivityForResult(intent, 38);

A回调

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Bundle bundle = data.getExtras();
    String name = bundle.getString("name");
    int age = bundle.getInt("age");
    float weight = bundle.getFloat("weight");
    Toast.makeText(MainActivity.this, name+age+weight, Toast.LENGTH_LONG).show();
    super.onActivityResult(requestCode, resultCode, data);
    }

ActivityB 接受
Intent data = new Intent();
data.setClass(SecondActivity.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name", "张无忌");
bundle.putInt("age", 20);
bundle.putFloat("weight", 120.5f);
data.putExtras(bundle);
setResult(250, data);
finish();

4、bundle

ActivityA 传值

Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("name", "乔峰");
bundle.putInt("age", 40);
bundle.putFloat("weight", 70.4f);
intent.putExtras(bundle);
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);

ActivityB 接受

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age");
float weight = bundle.getFloat("weight");
textview.setText(name+","+age+","+weight);


ok,还有什么方式,小伙伴们留言给我



{{collectdata}}

网友评论0