Intent

来源:互联网 发布:vnc mac版远程控制软件 编辑:程序博客网 时间:2024/05/17 05:13

一、不需要返回值的跳转

Intent intent=new Intent();intent.setClass(目前的acitivy.this, 目标activity.class);startActivity(intent);

二、需要返回值的跳转

Intent intent=new Intent();intent.setClass(目前的acitivy.this, 目标activity.class);startActivity(intent);startActivityForResult(intent, 状态值(int类型));状态值作为接受目标返回值的验证。requestCode 接收返回的状态值resultCode :RESULT_OK  RESULT_CANCELED 可以自己赋值,按返回键时,系统默认赋值为:RESULT_CANCELED目标activity 关闭才能返回请求activity

例如:
1、请求页面

public class MainActivy extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        Intent intent=new Intent();        intent.setClass(MainActivy.this, ReceiveMSG.class);        startActivityForResult(intent, 0);          }    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        if (requestCode==0) {            if (resultCode==RESULT_OK) {                Toast.makeText(this, "Send SMS RESULT_OK", Toast.LENGTH_SHORT).show();            }else if (resultCode==RESULT_CANCELED) {                Toast.makeText(this, "result cancel", Toast.LENGTH_SHORT).show();            }else {                Toast.makeText(this, resultCode, Toast.LENGTH_SHORT).show();            }        }else {            Toast.makeText(this, "requsetcode not 0", Toast.LENGTH_SHORT).show();        }    }}

2、接收返回值界面

public class ReceiveMSG extends Activity{    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);                ReceiveMSG.this.setResult(RESULT_OK);        this.finish();           }}

====================

Intent in = new Intent(this, Activity.class);            in.putExtra("mark", "");            in.putExtra("group_id", "");            startActivity(in);            Log.i("ggsdfads", "finish");            finish();

Log ggsdfads 日志会打
finish();会执行吗??
如果finish()执行 onDeatory()也会执行吗

                if (getIntent().getExtras().get("mark").equals("yes")) {                    if (!getIntent().getExtras().getString("status")                            .equals("aa")) {                        Intent newIntent = new Intent(this,                                NewActivity.class);                        newIntent.putExtra("id", getIntent()                                .getExtras().get("id").toString());                        startActivity(newIntent);                        finish();                    }                }

A 跳至B(中间)跳至C ,C又需要跳至B
如果需要携带的参数多,可用增加一个Tag 用于判断是那个Activity跳过来的 ,如果不这样可能会报空指针异常,因为getIntent() 有可能get之前的数据

0 0
原创粉丝点击