一.Activity中4种传递数据的方式
1.Intent传值,发送接收数据
发送数据
Intent i =new Intent(MainActivity.this,Main2Activity.class);
i.putExtra("Thanks","Thank you for reading my blog.");
startActivity(i);
接收数据
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent i = getIntent();
tv = (TextView)findViewById(R.id.tv);
tv.setText(i.getStringExtra("Thanks"));
}
2.传递 Bundle 包
发送数据
Intent i = new Intent(MainActivity.this,Main2Activity.class);
Bundle a = new Bundle();
a.putString("Thanks","Thank you for reading my blog.");
Bundle b = new Bundle();
b.putString("Android","Google");
b.putString("Windows","Microsoft");
a.putBundle("bundle",b);
i.putExtras(a);
startActivity(i);
接收数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent i = getIntent();
Bundle a2 = i.getExtras();
tv = (TextView)findViewById(R.id.tv);
tv.setText(String.format("%s Android属于%s,Windows属于%s"
,a2.getString("Thanks")
,a2.getBundle("bundle").getString("Android")
,a2.getBundle("bundle").getString("Windows")));
}
3.从Activity返回数据
发送数据
Intent i = new Intent();
i.putExtra("info","your data");
setResult(0, i); // 0表示成功
接收数据
在MainActivity中代码使用intent
用startActivityForResult进行导航,并请求结果
Intent i = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(i,0);
重载onActivityResult方法,并通过data参数获取数据。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
textView.setText(data.getStringExtra("info"));
}
4.传递自定义对象
这里不多做介绍
二.Android 更新UI的4种方式
1.Activity的runOnUiThread
textView = (TextView) findViewById( R.id.tv );
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText( "更新UI了");
}
});
2.Handler sendEmptyMessage()
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
textView.setText("Ui更新了");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.tv);
handler.sendEmptyMessage(2);
}
3.Handler post()
private TextView textView ;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById( R.id.tv );
handler.post(new Runnable() {
@Override
public void run() {
textView.setText( "Ui更新了");
}
}) ;
}
}
4.view Post()
textView = (TextView) findViewById( R.id.tv );
textView.post(new Runnable() {
@Override
public void run() {
textView.setText( "Ui更新了");
}
}) ;