安卓在不同的activity之间进行数据的传递
activity之间的四种传递数据的方法
- 使用intent 意图
- 使用全局变量
- 使用静态变量
- 使用剪切板
1、Intent意图传递数据
利用putExtra方法将数据以键值对的方式进行传递
传递
button= (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
intent.putExtra("name","hello");
startActivity(intent);
}
});
利用getStringExtra 取出
接收
Intent intent=getIntent();
String name = intent.getStringExtra("name");
2、全局变量传递数据
首先写一个存放数据的类,继承Application
package com.example.hifn123p.java;
import android.app.Application;
public class MyApp extends Application {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
清单文件中进行声明 在application结点下 声明name
<application
android:name=".MyApp"
>
传递 定义一个全局变量myApp
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myApp= (MyApp) getApplication();
myApp.setName("hello");
Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
startActivity(intent);
}
});
接收 定义一个全局变量myApp
myApp= (MyApp) getApplication();
textView.setText(myApp.getName());
3、静态变量传递数据
首先在OtherActivity中定义一个全局变量
public static String hello;
传递
button= (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
OtherAcitivity.jack="hello";
startActivity(intent);
}
});
4、剪切板传递数据
传递 将数据放到剪切板中
button= (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ClipboardManager cliboardManager =
(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
String name="hello";
cliboardManager.setText(name);
Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
startActivity(intent);
}
});
接收
ClipboardManager clipboardManager=
(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
String edString = clipboardManager.getText().toString();
多个Activity之间 例如 A ,B ,C;
现在我要把值通过A经过B传给C
如果用Intent的话 A-B 再在B中都取出来 然后在把值传到C
Bundle
如果在A中用了 Bundle 的话 我把Bundle传给B 在B中再转传到C C就可以直接去了
这样的话 还有一个好处 就是在B中 还可以给Bundle对象添加新的 key - value 同样可以在C中取出来