startActivityForResult的使用

来源:互联网 发布:巫师3和老滚5 知乎 编辑:程序博客网 时间:2024/06/02 20:34

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
原创粉丝点击