startActivityForResult的使用

1.需求

1.1 从MainActivity启动T2Activity,并希望T2Activity为MainActivity返回数据,而不需要再一次使用startActivity()

2.实现

….在这个例子里面,在T2Activity中点击按钮调用finish都会回到MainActivity,但是通过startActivity启动的并不会返回数据,回到MainActivity只是因为T2Activity被销毁了。而通过startActivityForResult有返回数据

2.1MainActivity.java

package com.example.lab8;

import android.os.Bundle;

import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView showResultFormT2;
    Button startBtn;
    Button waitBtn;



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

    }
    //获得组件
    protected void getWidget() {
        this.showResultFormT2 = (TextView)findViewById(R.id.text);
        this.startBtn = (Button)findViewById(R.id.start_btn);
        this.waitBtn = (Button)findViewById(R.id.wait_btn);
    }
    //为组件添加监听事件
    protected void addListener() {
        startBtn.setOnClickListener(startT2);
        waitBtn.setOnClickListener(startT2ForReslut);

    }

    //startActivity启动()
    public Button.OnClickListener startT2 = new  Button.OnClickListener(){

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,T2Activity.class);
            MainActivity.this.startActivity(intent);    
        }

    };

    //startActivityForResult启动()
    public Button.OnClickListener startT2ForReslut = new  Button.OnClickListener(){

        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MainActivity.this,T2Activity.class);
            int requestCode = 110;
        //这里注意使用MainActivity.this.startActivityForResult()而不是直接startActivityForResult(),因为在这里this = view  下面也一样
        MainActivity.this.startActivityForResult(intent, requestCode);

        }

    };

    //接受返回的结果
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        switch (resultCode) {
        case RESULT_OK:
            String result = data.getStringExtra("mes");
            showResultFormT2.setText(result);
            break;

        default:
            break;
        }
    };


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

2.2T2Activity.java

package com.example.lab8;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class T2Activity extends Activity {
    EditText edit;
    Button finish;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.t2activity_layout);
        edit = (EditText)findViewById(R.id.edit);
        finish = (Button)findViewById(R.id.finish);
        finish.setOnClickListener(finishT2);


    }

    public Button.OnClickListener finishT2 = new Button.OnClickListener()
            {
                @Override
                public void onClick(View v) {
                    String result = edit.getText().toString();
                    if((result.trim()).equals(""))
                        Toast.makeText(T2Activity.this, "请先输入" ,Toast.LENGTH_LONG).show();
                    else
                    {
                        Intent intent = new Intent();
                        intent.putExtra("mes", result);
                        T2Activity.this.setResult(RESULT_OK,intent);
                        T2Activity.this.finish();   
                    }
                };
            };

}

    //几个Activity中内置的resultCode 自定义时不要冲突
    /** Standard activity result: operation canceled. */
    public static final int RESULT_CANCELED    = 0;
    /** Standard activity result: operation succeeded. */
    public static final int RESULT_OK           = -1;
    /** Start of user-defined activity results. */
    public static final int RESULT_FIRST_USER   = 1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值