Android入门之Activity返回数据(startActivityForResult)

纸上得来终觉浅,绝知此事要躬行  --陆游       问渠那得清如许,为有源头活水来  --朱熹

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()函数,并获得数据,最后结果


你可能感兴趣的:(android)