Tears_fg

导航

Android_Intent_passValueForResult

 

当SecondActivity需要回传参数时:
1. MainActivity启动SecondActivity时需要调用startActivityForResult()
并定义请求码
2. SecondActivity在合适的使用调用setResult()设置返回码和返回的参数
然后调用finish()结束当前Activity
3. MainActivity需要重写onActivityResult()捕获SecondActivity返回的结果

常用的返回码为:
RESULT_OK 成功
RESULT_CANCEL 失败
RESULT_FIRST_USER 用户自定义的返回码
RESULT_FIRST_USER + 1
RESULT_FIRST_USER + 2
……

MainActivity:

package com.example.day06_activity5;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void btn_click(View view) {
        Intent intent = new Intent();
        intent.setClass(MainActivity.this, SecondActivity.class);
        // 期待SecondActivity会传递参数回来
        startActivityForResult(intent, 8);
    }

    // 重写onActivityResult() 捕获SecondActivity返回的结果
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == 8 && resultCode == RESULT_OK) {
            String name = data.getStringExtra("name");
            int age = data.getIntExtra("age", 0);
            double weight = data.getDoubleExtra("weight", 0.0);
            Toast.makeText(MainActivity.this, 
                    "姓名:" + name + ", 年龄:" + age + ", 体重:" + weight, 
                    Toast.LENGTH_LONG).show();
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

SecondActivity:

package com.example.day06_activity5;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    public void btn_click_return(View view) {
        // 传递参数回去
        // 返回码有如下值:
        // RESULT_OK 成功
        // RESULT_CANCEL 失败
        // RESULT_FIRST_USER 用户自定义的返回码
        Intent data = new Intent();
        data.putExtra("name", "放远");
        data.putExtra("age", 58);
        data.putExtra("weight", 555.5);
        setResult(RESULT_OK, data);
        // 退出当前Activity
        finish();
    }
}

 

posted on 2016-06-07 10:56  Tears_fg  阅读(175)  评论(0编辑  收藏  举报