Android的意图(intent)之参数传递的5中方式
[
application(全局变量) ,
clipboard(剪切板服务),
static(静态变量),
intent common put(意图通用传递),
activityResult(返回数据的activity)
]
1.appplication方式,类似于servlet中四大作用域中的application范围。
实现:
清单文件:
public class MyApp extends Application{
private String globalString;
public String getGlobalString() {
return globalString;
}
public void setGlobalString(String globalString) {
this.globalString = globalString;
}
}
在主activity中得到app,app = (MyApp) getApplication();然后设置值到app中app.setGlobalString(et.getText().toString());
再在下一个意图打开的activity中获取设置的值:MyApp app = (MyApp) getApplication();
//在这个activity中的textview中显示
tv.setText(app.getGlobalString());
2.剪切板服务传递参数。
//获得剪切板的系统服务
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboardManager.setText(res);
3.静态变量参数传递。
public class Static {
public static String name = "default";
public static int age = 0;
public static String sex = "男";
}在主activity中设置值,在下一个activity中获取值。
4.意图通用参数传递。
Intent intent = new Intent();
intent.setClass(Passdata_intent_static_varActivity.this,OtherActivity.class);//设置值
intent.putExtra("name1", nameStr);
//获取值
//得到意图对象
Intent intent = getIntent();
String name = intent.getStringExtra("name1");
5.参数传递并返回
//传递参数到下一个activity中和4类似,只是开启意图到下一个activity中是需要开启
//开启返回结果的activity
startActivityForResult(intent, REQUEST_CODE);//需要监听事件
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
Log.i("MG","返回主窗体");
if(resultCode == RESULT_OK){
if(requestCode == REQUEST_CODE){
String returnStr = data.getExtras().getString("return1");
Log.i("MG","get return return1="+returnStr);
TextView acceptReturn = (TextView) findViewById(R.id.acceptReturn);
acceptReturn.setText(returnStr);
}
}
//super.onActivityResult(requestCode, resultCode, data);
}