1、Activity傳遞數據,並顯示Activity上。
2、Android用Intent來做activity的跳轉,輕量級的數據用Bundle 配合着傳遞。
傳回數據用startActivityForResult來搞。
main類代碼如下:
- package com.smart.intent;
- import java.io.Serializable;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.Toast;
- class Data implements Serializable
- {
- public String name = "老樑";
- public int[] values = new int[]
- { 1, 3, 5, 9, 0,9,2,3,7,8 };
- }
- public class Main extends Activity implements OnClickListener{
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Button btnStart=(Button)findViewById(R.id.btnStartActivity);
- Button btnReturn=(Button)findViewById(R.id.btnReturn);
- btnStart.setOnClickListener(this);//綁定器
- btnReturn.setOnClickListener(this);
- }
- @Override//判斷按是哪一個按鍵。
- public void onClick(View v) {
- switch(v.getId()){
- case R.id.btnStartActivity:
- Data data=new Data();
- Intent intent=new Intent(this,SmartBrowser.class);
- intent.putExtra("name", "Smart");
- intent.putExtra("age", 988);
- intent.putExtra("data", data);
- startActivity(intent);
- break;
- case R.id.btnReturn:
- Intent proIntent=new Intent(this,SmartProcess.class);
- startActivityForResult(proIntent, R.layout.process);
- break;
- }
- }
- @Override//判斷數據接收時的確定與取消。
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch(requestCode){
- case R.layout.process:
- if(resultCode==20){
- Toast toast=Toast.makeText(this, data.getStringExtra("text"), Toast.LENGTH_LONG);
- toast.show();
- }else if(resultCode==21){
- Toast toast=Toast.makeText(this, "你取消了操作", Toast.LENGTH_LONG);
- toast.show();
- }
- break;
- default:
- break;
- }
- //反回碼與請求碼一樣。
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
數據顯示代碼:
- package com.smart.intent;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.TextView;
- public class SmartBrowser extends Activity{
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.browser);
- TextView textView=(TextView)findViewById(R.id.textview);
- Bundle bundle=getIntent().getExtras();//得到數據。
- String s="";
- s+="name:"+bundle.getString("name")+"\n";
- s+="name:"+bundle.getInt("age")+"\n";
- Data data=(Data)bundle.getSerializable("data");
- s+="Data.name:"+data.name+"\n";//進行接收數據。
- String values="";
- for (int i = 0; i < data.values.length; i++) {
- values+=data.values[i]+"";//得到數據。
- }
- s+="Data.values:"+values;
- textView.setText(s);//顯示數據
- }
- }
startActivityForResult反回數據
- package com.smart.intent;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class SmartProcess extends Activity implements OnClickListener
- {
- private EditText editText;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.process);
- editText=(EditText)findViewById(R.id.edittext);
- Button btnOK=(Button)findViewById(R.id.btnOK);
- Button btnCencel=(Button)findViewById(R.id.btnCancel);
- btnOK.setOnClickListener(this);
- btnCencel.setOnClickListener(this);
- }
- @Override//按建的判斷
- public void onClick(View v) {
- switch(v.getId()){
- case R.id.btnOK:
- getIntent().putExtra("text", editText.getText().toString());
- setResult(20,getIntent());
- break;
- case R.id.btnCancel:
- setResult(21);
- break;
- }
- finish();
- }
- }