Android页面跳转(intent)

Intent被用来连接各个Activity,也被用来在Activity之间传递数据。跳转的方法有startActivity()和startActivityForResult()。

startActivity()


从一个Activity跳转到另一个Activity传递数据分两步:

  1. 在起始Activity中存入待传递数据:Intent.putExtra(String K,String V)
  2. 在目标Activity中取出数据:Intent.getExtra()得到一个Bundle对象,该对象包含Intent携带的数据。再使用Bundle.getString(String key),通过key参数,得到key对应的值。(Bundle是一个HashMap再封装)

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText et=(EditText)findViewById(R.id.edittext1);
        Button btn=(Button)findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                Intent intent=new Intent();
                String str=et.getText().toString();
                intent.putExtra("Name", str);  //传递数据
                intent.setClass(MainActivity.this, Activity1.class);
                startActivity(intent);
            }
        });
    }
}
public class Activity1 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);
        TextView tv=(TextView)findViewById(R.id.show);
        Intent intent=getIntent();
        Bundle bundle=intent.getExtras();//接受数据
        String name=bundle.getString("Name");
        tv.setText("your Info is:"+"\n"+"name : "+name);
    }
}

这里写图片描述
这里写图片描述


startActivityForResult()


完成从一个页面跳转到另一个页面完成相关工作,如注册等,在注册页面完成输入等相关信息后再返回起始界面,并显示用户在注册页面输入的相关信息。其主要步骤为:

  1. 新建Intent,并使用startActivityForResult()方法调用。
  2. 重写onActivityResult(),在该方法中处理返回结果。
  3. 在目标Activity中,新建空指向的Activity,并绑定数据。
  4. 使用setResult()方法,将Intent传递到结果中。
  5. 调用finish()结束目标Activity。同时系统会调用重写的onActivityResult()。
    onActivityResult代码如下:
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    }
第一个参数是请求码,标示本次结果对应哪个请求。
第二个参数是结果码,其中RESULT_OK,代表结果返回成功。RESULT_CANCELED本次操作取消返回的值。

public class MainActivity extends Activity {
    static final int REQUEST_CODE=0;//预定义请求码
    TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv=(TextView)findViewById(R.id.show);
        Button btn=(Button)findViewById(R.id.register);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                Intent intent=new Intent();
                intent.setClass(MainActivity.this, Activity1.class);
                startActivityForResult(intent,REQUEST_CODE );
            }
        });
    }
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
        if(requestCode==REQUEST_CODE)//判断请求码是否正确
        {
            if(resultCode==RESULT_OK){//判断结果码是否正确
                Bundle bundle=data.getExtras();
                String name=bundle.getString("Name");
                tv.setText("your Info is:\n"+name);
            }
        }
        super.onActivityResult(requestCode, resultCode, data);

    }
public class Activity1 extends Activity {
    Button confirm;
    EditText et;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);
        et=(EditText)findViewById(R.id.edittext1);
        confirm=(Button)findViewById(R.id.confirm);
        confirm.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 自动生成的方法存根
                Intent intent=new Intent();
                String name=et.getText().toString();
                intent.putExtra("Name", name);
                setResult(RESULT_OK, intent);//将Intent设置到结果中
                finish();//结束Activity

            }
        });
    }

这里写图片描述
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值