Android中有一个方法也可以启动其他的Activity,并且在Activity销毁时将数据返回到上一个Activity中,这个方法是startActivityForResult(Intent intent,int requestCode)。
这个方法接收两个参数,其中第一个参数是Intent,第二个参数是请求码。
实例:
(一)创建MainActivity和activity_main.xml布局文件
简单的布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="姓名" /> <EditText android:id="@+id/nameedittext" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="跳转" /> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
MainActivity.java代码
public class MainActivity extends Activity { EditText nameEditText; Button button; TextView titleTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); nameEditText=(EditText)findViewById(R.id.nameedittext); button=(Button)findViewById(R.id.button1); titleTextView=(TextView)findViewById(R.id.title); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent=new Intent(MainActivity.this,BackActivity.class); intent.putExtra("name", nameEditText.getText().toString()); startActivityForResult(intent, 1); //输入两个参数intent和请求码 } }); } @Override public void onActivityResult(int requestcode,int resultcode,Intent intent) { switch(requestcode) { case 1: if(resultcode==RESULT_OK) { titleTextView.setText(intent.getStringExtra("title")); } } } }
MainActivity中首先是对startActivityForResult函数传入两个参数,来跳转到其他页面。同时还要重写onActivityResult函数,函数的参数有requestCode(请求码)、resultCode(结果码)和Intent,其中requestCode要和startActivity中传人的第二个参数一致,结果码是下一个Activity的返回的结果码。
(二)创建BackActivity和back_activity.xml
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/content" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/finish" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="完成" /> </LinearLayout>
BackActivity.java代码:
public class BackActivity extends Activity{ Button button; EditText editText; @Override public void onCreate(Bundle savedInstacedBundle) { super.onCreate(savedInstacedBundle); setContentView(R.layout.back_activity); button=(Button)findViewById(R.id.finish); editText=(EditText)findViewById(R.id.content); Intent intent=getIntent(); Bundle bundle=intent.getExtras(); final String nameString=bundle.getString("name"); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent=new Intent(); intent.putExtra("title",nameString+editText.getText().toString()); setResult(RESULT_OK, intent);//两个参数结果码和Intent finish();//结束掉Activity } }); } }
setResult函数设置结果码和intent来返回到MainActivity的onActivityResult()函数,并获得数据,最后结果