Android中数据的传递与回传数据的接收以及结果码的作用

Android中数据的传递与回传数据的接收


大致的思路:
主页面:
1.创建一个Intent对象.
Intent intent=new Intent (Content content,Activity2.class);
第一个参数是上下文,第二个参数是要开启的组件的名字,组件名.class
2.将要传递的数据存储到Intent对象上.
intent.putExtra(键名,值);
用键值对的形式进行存储数据.
3.用Android提供的startActivityForResult();方法来实现数据的回传
startActivityForResult(intent,1);
第一个参数:Intent对象
第二个参数:请求码
请求码的作用:当你一个Activity请求多个Activity的时候,会用同一个方法onActivityResult();方法接收回传数据,这个时候我们就要用请求码和结果码进行匹配,判断是哪个Activity的回传数据,不同Activity的回传数据做不同的操作.

4.接收回传数据
重写方法onActivityResult(int requestCode,int resultCode,Intent data);
requestCode表示在启动Activity2的时候传的请求码
resultCode回传数据时传入的结果码
data 携带回传数据的Intent

当Activity2执行完setResult(结果码,intent); 跳到Activity1后会自动调用该方法

Activity2页面:
接收数据:
Intent intent=getIntent(); //获得主页面传过来的intent对象
intent.getStringExtra(键名); //根据键名取出存储在intent对象身上的数据

回传数据:
传数据到主页面Activity1
Intent intent =new Intent(this,Activity1); //创建一个开启Activity1的Intent对象
intent.putExtra(键名,值); //intent存储要携带的数据
setResult(结果码,intent); //回传数据,开启Activity1
finish(); //销毁当前Activity,切记你不销毁的话,是不会发生跳转的
实例:
Intent_main 主页面

package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Intent_main extends AppCompatActivity implements View.OnClickListener {
    private Button btn_login;
    private String username,password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intent_main);
        btn_login=(Button)findViewById(R.id.btn_login);
        btn_login.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        username=((EditText)findViewById(R.id.et_userName)).getText().toString();
        password=((EditText)findViewById(R.id.et_password)).getText().toString();
        Intent intent=new Intent(this,Intent_main2.class);
        intent.putExtra("name",username);
        intent.putExtra("password",password);
        startActivityForResult(intent,1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Toast.makeText(this,data.getStringExtra("backdata"),Toast.LENGTH_LONG).show();
    }
}

Intent_main2 回传数据的页面

package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class Intent_main2 extends AppCompatActivity implements View.OnClickListener {
    private TextView tv_name,tv_password;
    private String name,password;
    private Button btn_back;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intent_main2);
        tv_name=(TextView)findViewById(R.id.tv_username);
        tv_password=(TextView)findViewById(R.id.tv_password);
        btn_back=(Button)findViewById(R.id.btn_back);

        Intent intent=getIntent();
         name=intent.getStringExtra("name");
         password=intent.getStringExtra("password");
         tv_name.setText(name);
         tv_password.setText(password);
//        Toast.makeText(this,intent.getStringExtra("name"),Toast.LENGTH_LONG).show();
        btn_back.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        Intent intent=new Intent();
        if (name.equals("123") || password.equals("456")){
            intent.putExtra("backdata","登录成功");
        }else{
            intent.putExtra("backdata","登录失败");
        }
        setResult(1,intent);
        finish();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值