现在有这样的功能需求。在一个Activity (A)中打开另一个Activity(B).在另一个B 中添写数据,当这个B关闭时,把在B中填写的
数据返回给A,并写显示出。这样就有必要用今天的功能了。
以下为是代码。也就是Activity (A)
package com.hkrt.intent; import com.hkrt.domain.Person; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; public class IntentDemoActivity extends Activity { /** Called when the activity is first created. */ private static final String LOG="IntentDemoActivity"; @Override public void onCreate(Bundle savedInstanceState) { Log.i(LOG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button =(Button)this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(IntentDemoActivity.this,OtherActivity.class); // 方法一 // intent.putExtra("name","张三"); //方法二 Bundle bun = new Bundle(); bun.putString("name","张三"); bun.putInt("age", 18); Person per = new Person("张三",5896.20); bun.putSerializable("person", per); intent.putExtras(bun); // startActivity(intent); startActivityForResult(intent, 10); } }); } //接收新的Activiity 返回的结果 /** * requestCode:10 * resultCode:100 * */ @Override protected void onActivityResult(int requestCode,int resultCode,Intent data){ Toast.makeText(this, data.getExtras().getString("name")+"requestCode:"+requestCode+"resultCode"+resultCode, 1).show(); super.onActivityResult(requestCode, resultCode, data); } @Override protected void onStart() { Log.i(LOG, "onStart"); super.onStart(); } @Override protected void onResume() { Log.i(LOG, "onResume"); super.onResume(); } @Override protected void onPause() { Log.i(LOG, "onPause"); super.onPause(); } @Override protected void onRestart() { Log.i(LOG, "onRestart"); super.onRestart(); } @Override protected void onStop() { Log.i(LOG, "onStop"); super.onStop(); } @Override protected void onDestroy() { Log.i(LOG, "onDestroy"); super.onDestroy(); } }
Activity(B).
package com.hkrt.intent; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.hkrt.domain.Person; public class OtherActivity extends Activity { private static final String LOG="OtherActivity"; @Override protected void onCreate(Bundle savedInstanceState) { Log.i(LOG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.other); Intent intent = this.getIntent(); //方法一 // String name = intent.getStringExtra("name"); //方法二 Bundle bun = intent.getExtras(); String name1 = bun.getString("name"); int age = bun.getInt("age",10); TextView textView = (TextView)this.findViewById(R.id.textView); Person per = (Person)bun.getSerializable("person"); textView.setText("姓名:"+name1+"\t年龄:"+age+"\tperson:"+per.getName()+"\tmoney:"+per.getMoney()); Button button = (Button)this.findViewById(R.id.shut_button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("name", "hello android ,i am comming"); setResult(100, intent); OtherActivity.this.finish(); } }); } @Override protected void onResume() { Log.i(LOG, "onResume"); super.onResume(); } @Override protected void onStart() { Log.i(LOG, "onStart"); super.onStart(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 返回按键 if (keyCode == KeyEvent.KEYCODE_BACK) { new AlertDialog.Builder(this) .setCancelable(false) .setIcon(android.R.drawable.btn_dialog) .setTitle("退出"). setMessage("您确认要退出程序吗?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //关闭程序的核心方法 // OtherActivity.this.finish(); dialog.cancel(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).show(); } return true; } }
第一个Activity .页面只有一个button.第二个Acivity 有一个TextView 和一个Button.当点击button时,返回到第一个Activity.页面比较简单。
结果图: