Android_Intent_passValue(4)

xml布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     android:orientation="vertical"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/et_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:hint="请输入账号 "/>
    <EditText
        android:id="@+id/et_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:hint="请输入密码 "/>
    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/sex"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/sex_man"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:textSize="15sp"
            />
        <RadioButton
            android:id="@+id/sex_woman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textSize="15sp"
            />
    </RadioGroup>
    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第一种传值方式:传递基本数据类型"
        android:onClick="clickLogin"
        android:textSize="20sp"/>
    <Button
        android:id="@+id/btn_login1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第二种传递方式:使用bundle传递基本数据"
        android:onClick="clickLogin"
        android:textSize="20sp"/>
    <Button
        android:id="@+id/btn_login2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第三种传递方式:通过可序列化对象传值"
        android:onClick="clickLogin"
        android:textSize="20sp"/>
    <Button
        android:id="@+id/btn_login3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第四种传递方式:通过bundle传递可序列化对象"
        android:onClick="clickLogin"
        android:textSize="20sp"/>
</LinearLayout>

MainActivity.java

package com.example.day05_intent_passvalue;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class MainActivity extends Activity {
private EditText et_name;
private EditText et_psd;
private RadioGroup sex;
private RadioButton sex_man;
private RadioButton sex_woman;
private Button btn_login;
private Button btn_login1;
private Button btn_login2;
private Button btn_login3;
private String name;
private String psd;
private int checkedRadioButtonId;
private int sex1;

/**
 * Intent传值:
 *     将Main1中输入的值传递到main2
 *
 */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        initView();

    }

    private void initView() {
        et_name = (EditText) findViewById(R.id.et_account);
        et_psd = (EditText) findViewById(R.id.et_password);
        sex = (RadioGroup) findViewById(R.id.sex);
        sex_man = (RadioButton) findViewById(R.id.sex_man);
        sex_woman = (RadioButton) findViewById(R.id.sex_woman);
        btn_login = (Button) findViewById(R.id.btn_login);
        btn_login1 = (Button) findViewById(R.id.btn_login1);
        btn_login2 = (Button) findViewById(R.id.btn_login2);
        btn_login3 = (Button) findViewById(R.id.btn_login3);
    }
    public void clickLogin(View v){
        switch (v.getId()) {
        case R.id.btn_login:
            //传递基本数据类型
            passBaseDate();
            break;
        case R.id.btn_login1:
            //通过Bundle传递基本数据
            passBaseDataByBundle();
            break;
        case R.id.btn_login2:
            //传递可序列化对象
            passSerializedObject();
            break;
        case R.id.btn_login3:
            //通过Bundle传递可序列化对象
            passSerializedObjectByBundle();
            break;

        }

    }
    private void passSerializedObjectByBundle() {
        //获得数据
        getData();
        //创建Student对象,将数据封装成Student对象
        Student s = new Student(name,psd,sex1);
        //创建一个Intent对象,设置跳转的activity
        Intent intent = new Intent(MainActivity.this,Activity2.class);
        //创建Bundle对象,将序列化对象设置到bundle对象中
        Bundle bundle = new Bundle();
        bundle.putSerializable("Student", s);
        //将bundle设置到intent对象中
        intent.putExtra("BUNDLE",bundle);
        //开启另一个activity
        startActivity(intent);

    }

    private void passSerializedObject() {
        // TODO Auto-generated method stub
        getData();
        Intent intent = new Intent(MainActivity.this,Activity2.class);
        Student s = new Student(name,psd,sex1);
        intent.putExtra("Student", s);
        startActivity(intent);
    }

    private void passBaseDataByBundle() {
        // TODO Auto-generated method stub
        //获得数据
        getData();
        //创建一个Intent对象,并设置其跳转的activity
        Intent intent = new Intent(MainActivity.this,Activity2.class);
        //创建Bundle对象,将值存入到Bundle对象中
        Bundle extras = new Bundle();
        extras.putString("NAME", name);
        extras.putString("PSD", psd);
        extras.putInt("SEX", sex1);
        //将bundle设置到intent中
        intent.putExtra("BUNDLE",extras);
        //开启另一个activity
        startActivity(intent);
    }

    private void passBaseDate() {
        // TODO Auto-generated method stub
        //获得数据
        //通过intent意图将数据传递过去
        getData();
        //1.创建intent意图
        Intent intent = new Intent();
        //2.指定需要开启的activity
        intent.setClass(MainActivity.this,Activity2.class);
        //3.设置需要传递的数据
        intent.putExtra("NAME", name);
        intent.putExtra("PSD", psd);
        intent.putExtra("SEX", sex1);
        //4开启另一个activity
        startActivity(intent);
    }

    private void getData() {
        name = et_name.getText().toString().trim();
        psd = et_psd.getText().toString().trim();
        sex1 = -1;
        checkedRadioButtonId = sex.getCheckedRadioButtonId();
        //利用安卓自带文本工具类判断文本数据是否为空
        if(TextUtils.isEmpty(name)||TextUtils.isEmpty(psd)){
            return;
        }
        if(checkedRadioButtonId==sex_man.getId()){
            sex1 = 1;
        }else{
            sex1  = 2;
        }
    }

}

Activity2.java

package com.example.day05_intent_passvalue;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.TextView;

public class Activity2 extends Activity{
    private TextView tv;
    private String sex;
    private String name;
    private String psd;
    private int sexId;
    private String data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        tv = (TextView) findViewById(R.id.name);
        //data = getBaseDate();
        //通过Bundle对象得到基本数据类型的数据
        //data =getBaseDataByBundle();
        //通过序列化对象得到数据
//        data = getSerializedObject();
        //通过Bundle对象得到序列化对象从而得到基本类型数据
        data = getSerialzedObjectByBundle();
        //设置文本显示的内容
        tv.setText(data);

    }

    private String getSerialzedObjectByBundle() {
        //得到传过来的intent对象
        Intent intent = getIntent();
        //得到Bundle对象
        Bundle bundle = intent.getBundleExtra("BUNDLE");
        //通过bundle对象得到序列化对象
        Student s = (Student) bundle.getSerializable("Student");
        name = s.getName();
        psd = s.getPsd();
        sexId = s.getSex();
        if(TextUtils.isEmpty(name)||TextUtils.isEmpty(psd)){
            return null;
        }
        if(sexId==1){
            sex = "男";
        }else{
            sex = "女";
        }
        return "账号:"+name+",密码:"+psd+",性别:"+sex;
    }

    private String getSerializedObject() {
        // TODO Auto-generated method stub
        Intent intent = getIntent();
        Student s = (Student) intent.getSerializableExtra("Student");
        name = s.getName();
        psd = s.getPsd();
        sexId = s.getSex();
        if(TextUtils.isEmpty(name)||TextUtils.isEmpty(psd)){
            return null;
        }
        if(sexId==1){
            sex = "男";
        }else{
            sex = "女";
        }
        return "账号:"+name+",密码:"+psd+",性别:"+sex;
    }

    private String getBaseDataByBundle() {
        //得到传过来的Intent
        Intent intent = getIntent();
        //获得Bundle数据
        Bundle extras = intent.getBundleExtra("BUNDLE");
        //通过Bundle对象得到基本类型数据
        name = extras.getString("NAME");
        psd = extras.getString("PSD");
        sexId = extras.getInt("SEX");
        if(TextUtils.isEmpty(name)||TextUtils.isEmpty(psd)){
            return null;
        }
        if(sexId==1){
            sex = "男";
        }else{
            sex = "女";
        }
        return "账号:"+name+",密码:"+psd+",性别:"+sex;

    }

    private String getBaseDate() {
        //1.获得传过来的Intent
        Intent intent = getIntent();
        name = intent.getStringExtra("NAME");
        psd = intent.getStringExtra("PSD");
        sexId = intent.getIntExtra("SEX", -1);
        if(TextUtils.isEmpty(name)||TextUtils.isEmpty(psd)){
            return null;
        }
        if(sexId==1){
            sex = "男";
        }else{
            sex = "女";
        }
        return "账号:"+name+",密码:"+psd+",性别:"+sex;
    }
}
时间: 2024-10-29 11:48:59

Android_Intent_passValue(4)的相关文章