在启动另外一个Activity的时候,有两种方法,一种是直接使用startActivity,另外一种就是使用startActivityForResult。前一种想必大家都明白怎么使用了,我就不废话了。本文主要通过一个Demo来学习一下第二种。
startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish()动作或者back动作后,将设置的值回传给第一个页面,从而第一个页面来显示所得到的值。这个有一点像回调方法,就是在第二个页面finish()动作或者back动作后,会回调第一个页面的onActivityResult()方法,所以我们可以重写一下这个方法。直接看代码吧:
//第一个界面代码:
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.TextView; public class ActivityResultDemoActivity extends Activity { private Button button_start_task; private TextView TextView_result; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button_start_task=(Button) findViewById(R.id.button_start_task); TextView_result=(TextView) findViewById(R.id.TextView_result); button_start_task.setOnClickListener(new button_start_task_Listener()); } private class button_start_task_Listener implements OnClickListener { public void onClick(View v) { Intent intent=new Intent(ActivityResultDemoActivity.this,SimpleTaskActivity.class); //关键点来了,使用startActivityForResult来启动 startActivityForResult(intent, 100); } } /** * 复写onActivityResult,这个方法 * 是要等到SimpleTaskActivity点了提交过后才会执行的 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //可以根据多个请求代码来作相应的操作 if(20==resultCode) { String bookname=data.getExtras().getString("bookname"); String booksale=data.getExtras().getString("booksale"); TextView_result.setText("书籍名称:"+bookname+"书籍价钱"+booksale+"元"); } super.onActivityResult(requestCode, resultCode, data); } }//第二个界面代码:
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.EditText; public class SimpleTaskActivity extends Activity { private EditText EditText_bookname; private EditText EditText_booksale; private Button Button_task_fulfill; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); EditText_bookname=(EditText) findViewById(R.id.EditText_bookname); EditText_booksale=(EditText) findViewById(R.id.EditText_booksale); Button_task_fulfill=(Button) findViewById(R.id.Button_task_fulfill); Button_task_fulfill.setOnClickListener(new Button_task_fulfill_Listener()); } private class Button_task_fulfill_Listener implements OnClickListener { public void onClick(View v) { String str_bookname=EditText_bookname.getText().toString(); String str_booksale=EditText_booksale.getText().toString(); //判断空,我就不判断了。。。。 Intent data=new Intent(); data.putExtra("bookname", str_bookname); data.putExtra("booksale", str_booksale); //请求代码可以自己设置,这里设置成20 setResult(20, data); //关闭掉这个Activity finish(); } } }
本文参考:http://blog.csdn.net/yanglian20009/article/details/7238995