activity的启动方式 requestCode和resultCode的区别

来源:互联网 发布:上海游安网络 编辑:程序博客网 时间:2024/06/05 19:29

Activity的启动方式:

1.startActivity(intent)

 Intent intent=new Intent(MainActivity.this,Bactivity.class);                startActivity(intent);

2.startActivityForResult(Intent)

 Intent intent2=new Intent(MainActivity.this,Bactivity.class);                startActivityForResult(intent2, 10002);

3.requestCoderesultCode的用法

3.1 requestCode是用来标识请求的来源: Mainactivity中有两个按钮都是要启动Bactvity,那么为了区分是哪一个按钮启动的(请求的来源)就在启动的时候使用requestCode来标识

要做的操作如下:点击返回到Mainactivity时候,TextView会显示由哪个按钮启动的Bactvity

public class MainActivity extends Activity implements OnClickListener{    Button btn1,btn2;    TextView mTextView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.btn1).setOnClickListener(this);        findViewById(R.id.btn2).setOnClickListener(this);        mTextView=(TextView)findViewById(R.id.textView2);//文字显示    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn1:                Intent intent=new Intent(MainActivity.this,Bactivity.class);                startActivityForResult(intent, 10001);                break;            case R.id.btn2:                Intent intent2=new Intent(MainActivity.this,Bactivity.class);                startActivityForResult(intent2, 10002);                break;        }    }// 当Bactivity关闭之后会调用该方法    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {        switch(requestCode){            case 10001:                //按钮1启动的数据处理                mTextView.setText("是button1启动的");                break;            case 10002:                //按钮2启动的数据处理                mTextView.setText("是button2启动的");                break;        }    }}

点击按钮启动Bactvity之后,按返回,那么Mainactivity会首先调onActivityResult方法,在这个方法里面根据requestCode区分进行相应的处理即可

3.2 resultCode的用法:resultCode是用来标识返回的数据来自哪一个activity

Main activity中 两个按钮分别启动不同的activity

  @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn1:                Intent intent=new Intent(MainActivity.this,Bactivity.class);                startActivityForResult(intent, 10001);                break;            case R.id.btn2:                Intent intent2=new Intent(MainActivity.this,Cactivity.class);                startActivityForResult(intent2,10002);                break;        }    }// 当Bactivity关闭之后会调用该方法    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {        String data=intent.getStringExtra("data");        switch(resultCode){            case 10001:                //处理来自Bactivity的数据                mTextView.setText(data);                break;            case 10002:                //处理来自Cctivity的数据                mTextView.setText(data);                break;        }    }
Bactvity中

   Intent intent=new Intent();        intent.putExtra("data","the data from Bactviity");//        // 设置结果,并进行传送        this.setResult(10001, intent);
Captivity中

 Intent mIntent = new Intent();        mIntent.putExtra("data", "the data from Cactivity");        // 设置结果,并进行传送        this.setResult(10002, mIntent);
按返回Mainactivity中的onActivtyResult的方法会被触发,然后即可对来自不同的activity的数据进行处理









0 0
原创粉丝点击