Android使用intent、bundle传递数据

<h2>有了问题就搜索百度,搜不到在google,很多资源和答案都是在csdn上找到的,自己使用了别人那么多的资源,自己却没有贡献过什么,甚感羞愧,就把自己写的一点传上来,有不对的地方,欢迎指导。</h2><h3 style="text-align: justify;">这个demo是从TestActivity跳转到MainActivity传值,上代码。</h3>

  首先是Person类
package com.imooc.cn;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by wulsh on 2016/4/28.
 * 序列化要么实现Serializable接口
 * 要么实现Parcelable接口,推荐Parcelable
 */
public class Person implements Parcelable {
    private String name;
    private int age;
    private String sex;
    private String address;

    public Person(String name, String address, String sex, int age) {
        this.name = name;
        this.address = address;
        this.sex = sex;
        this.age = age;
    }

    protected Person(Parcel in) {
        name = in.readString();
        age = in.readInt();
        sex = in.readString();
        address = in.readString();
    }

    public static final Creator<Person> CREATOR = new Creator<Person>() {
        @Override
        public Person createFromParcel(Parcel in) {
            return new Person(in);
        }

        @Override
        public Person[] newArray(int size) {
            return new Person[size];
        }
    };

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(age);
        dest.writeString(sex);
        dest.writeString(address);
    }
}

TestActivity:
package com.example.wulsh.myapplication;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Parcelable;
import android.text.util.Linkify;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.imooc.cn.Person;

import java.util.ArrayList;

/**
 * Created by wulsh on 2016/4/27.
 */
public class TestActivity extends Activity {
    private LinearLayout linearLayout;
    private Button btn_change;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        linearLayout = (LinearLayout) findViewById(R.id.linear_bottom);
        TextView edt_use = (TextView) findViewById(R.id.edt_use);
        char[] char_1 = {'a', 'n', 'd', 'r', 'o', 'i', 'd', 's', 'f', 'g'};
        //以数组作为输出依据,从那个元素开始取,一共取出多少个元素
//      edt_use.setText(char_1, 0, 7);
        edt_use.setAutoLinkMask(Linkify.ALL);//设置自动全部链接
        edt_use.setText("Android官网:" + "https://www.android.com");

        //改变文字的前景色和字体颜色
        edt_use.setBackgroundDrawable(getResources().getDrawable(R.drawable.blue_button_background));
        edt_use.setTextColor(Color.MAGENTA);

        //得到String文件里面的字符串
        CharSequence name = getResources().getString(R.string.text_name);
        Log.i("CMCC", name + "");
        edt_use.append("," + name);

        //获得额屏幕的宽度和高度
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        Log.i("CMCC", "手机屏幕的分辨率为:" + metrics.widthPixels + "*" + metrics.heightPixels);
        Toast.makeText(TestActivity.this,
                "手机屏幕的分辨率为:" + metrics.widthPixels + "*" + metrics.heightPixels, Toast.LENGTH_LONG).show();

        //切换布局
        btn_change = (Button) findViewById(R.id.btn_change);
        btn_change.setOnClickListener(new MyListener());

        //activity之间参数的传递
        Button btn_jump = (Button) findViewById(R.id.btn_jump);
        btn_jump.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(TestActivity.this, MainActivity.class);
                Person p = new Person("李老师", "苏州市", "女", 12);
                ArrayList<Parcelable> list = new ArrayList<>();
                list.add(p);

                //使用bundle传值
                Bundle bundle = new Bundle();
                bundle.putString("sex", "woman");
                bundle.putDouble("childNumber", 52);
                //bundle传递对象和集合
                bundle.putParcelable("person", p);
                bundle.putParcelableArrayList("List", list);

                //使用intent直接传值
                intent.putExtra("name", "Tom");
                intent.putExtra("age", 25);
                //intent 传递对象
                intent.putExtra("person", p);
                //intent传递集合
                intent.putParcelableArrayListExtra("List", list);

                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        //在这里测量状态栏的高度
        Rect rect = new Rect();
        getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
        int statusBarHeight = rect.top;
        Log.i("CMCC", "statusBarHeight:" + statusBarHeight);

        //测量根布局的高度
        int linearHeight = linearLayout.getHeight();
        Log.i("CMCC", "linearHeight:" + linearHeight);
    }

    public class MyListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            if (v == btn_change) {
                jumpToSecond();
            }
        }
    }

    private void jumpToSecond() {
        setContentView(R.layout.activity_mylayout);
        Button btn_second_change = (Button) findViewById(R.id.btn_second_change);
        btn_second_change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                jumpToFirst();
            }
        });
    }

    private void jumpToFirst() {
        setContentView(R.layout.activity_test);
        Button btn_change = (Button) findViewById(R.id.btn_change);
        btn_change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                jumpToSecond();
            }
        });
    }
}




MainActivity:
package com.example.wulsh.myapplication;

import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;

import com.facebook.drawee.backends.pipeline.Fresco;
import com.imooc.cn.Person;

import java.util.List;

import cn.pedant.SweetAlert.SweetAlertDialog;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private ListView list_view;
    private List<String> list;
    private MyAdapter myAdapter;
    private int i = -1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Fresco.initialize(MainActivity.this);
        setContentView(R.layout.activity_main);
        Button btn = (Button) findViewById(R.id.btn_click);
        Button btn1 = (Button) findViewById(R.id.btn_click1);
        Button btn2 = (Button) findViewById(R.id.btn_click2);
        Button btn3 = (Button) findViewById(R.id.btn_click3);
        Button btn4 = (Button) findViewById(R.id.btn_click4);
        Button btn5 = (Button) findViewById(R.id.btn_click5);
        Button btn6 = (Button) findViewById(R.id.btn_click6);
        Button btn7 = (Button) findViewById(R.id.btn_click7);
        btn.setOnClickListener(this);
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);
        btn5.setOnClickListener(this);
        btn6.setOnClickListener(this);
        btn7.setOnClickListener(this);
        findViewById(R.id.btn_click8).setOnClickListener(this);

//        下面是Fresco的图片加载框架
        list = new ImagesSources().list;
        list_view = (ListView) findViewById(R.id.list_view);
        myAdapter = new MyAdapter(MainActivity.this, list);
        list_view.setAdapter(myAdapter);

        //接受来自前一个activity的数据,intent直接传递过来的值
        String name = getIntent().getStringExtra("name");
        int age = getIntent().getIntExtra("age", -1);
        Log.i("CMCC", "intent传过来的name:" + name + ",age:" + age);
        Person person = getIntent().getParcelableExtra("person");
        Log.i("CMCC", "intent传过来的对象person:" + person.getAddress() + "," + person.getName());
        Log.i("CMCC", "intent传过来的集合的长度:" + getIntent().getParcelableArrayListExtra("List").size());

        //接收bundle传递过来得值
        Bundle bundle = getIntent().getExtras();
        Log.i("CMCC", "bundle传过来的sex:" + bundle.getString("sex") + ",childNumber:" + bundle.getDouble("childNumber"));
        Person person1 = bundle.getParcelable("person");
        Log.i("CMCC", "bundle传过来的对象person:" + person1.getAddress() + "," + person1.getName());
        Log.i("CMCC", "bundle传过来的集合的长度:" + bundle.getParcelableArrayList("List").size());
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_click:
                final SweetAlertDialog dialog = new SweetAlertDialog(this);
                dialog.getProgressHelper().setBarColor(Color.parseColor("#A5DC86"));
                dialog.setTitleText("Loading");
                dialog.setCancelable(true);
                dialog.setCanceledOnTouchOutside(true);
                dialog.setCancelText("取消");
                dialog.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
                    @Override
                    public void onClick(SweetAlertDialog sweetAlertDialog) {
                        dialog.dismissWithAnimation();
                    }
                });
                dialog.show();
                break;
            case R.id.btn_click1:
                new SweetAlertDialog(this)
                        .setContentText("It's pretty, isn't it?")
                        .show();
                break;
            case R.id.btn_click2://错误类型
                new SweetAlertDialog(this, SweetAlertDialog.ERROR_TYPE)
                        .setTitleText("Oops...")
                        .setContentText("Something went wrong!")
                        .show();
                break;
            case R.id.btn_click3://成功类型
                new SweetAlertDialog(this, SweetAlertDialog.SUCCESS_TYPE)
                        .setTitleText("Good job!")
                        .setContentText("You clicked the button!")
                        .show();
                break;
            case R.id.btn_click4:
                //警告类型
//                new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
//                        .setTitleText("Are you sure?")
//                        .setContentText("Won't be able to recover this file!")
//                        .setConfirmText("Yes,delete it!")
//                        .setCancelText("cancel")
//                        .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
//                            @Override
//                            public void onClick(SweetAlertDialog sDialog) {
//                                // reuse previous dialog instance
//                                sDialog.setTitleText("Deleted!")
//                                        .setContentText("Your imaginary file has been deleted!")
//                                        .setConfirmText("OK")
//                                        .setConfirmClickListener(null)
//                                        .changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
//                            }
//                        })
//                        .show();
                //设置警告样式
                final SweetAlertDialog sDialog = new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE);
                //设置进度条的颜色
                sDialog.getProgressHelper().setBarColor(R.color.colorRed);
                sDialog.setCancelable(true);
                sDialog.setCanceledOnTouchOutside(true);
                //设置内容
                sDialog.setTitleText("确定要删除这个吗?");
                sDialog.setContentText("删除之后就无法恢复了!");
                sDialog.setConfirmText("删除");
                sDialog.setCancelText("取消");
                sDialog.showCancelButton(true);
                sDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {

                    @Override
                    public void onClick(SweetAlertDialog sweetAlertDialog) {
                        sDialog.setTitleText("已删除!");
                        sDialog.setContentText("你所选中的文件已经删除");
                        sDialog.setConfirmText("ok");
                        sDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                            @Override
                            public void onClick(SweetAlertDialog sweetAlertDialog) {
                                sDialog.dismissWithAnimation();
                            }
                        });
                        sDialog.changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
                        sDialog.showCancelButton(false);
                    }
                });
                sDialog.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {

                    @Override
                    public void onClick(SweetAlertDialog sweetAlertDialog) {
                        sDialog.setTitleText("取消成功");
                        sDialog.setContentText("文件未删除");
                        sDialog.changeAlertType(SweetAlertDialog.ERROR_TYPE);
                        sDialog.showCancelButton(false);
                        sDialog.setConfirmText("ok");
                        sDialog.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                            @Override
                            public void onClick(SweetAlertDialog sweetAlertDialog) {
                                sDialog.dismissWithAnimation();
                            }
                        });
                    }
                });
                sDialog.show();

                break;
            case R.id.btn_click5:
                new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
                        .setTitleText("Are you sure?")
                        .setContentText("Won't be able to recover this file!")
                        .setCancelText("No,cancel plx!")
                        .setConfirmText("Yes,delete it!")
                        .showCancelButton(true)
                        .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() {
                            @Override
                            public void onClick(SweetAlertDialog sDialog) {
                                // reuse previous dialog instance, keep widget user state, reset them if you need
                                sDialog.setTitleText("Cancelled!")
                                        .setContentText("Your imaginary file is safe :)")
                                        .setConfirmText("OK")
                                        .showCancelButton(false)
                                        .setCancelClickListener(null)
                                        .setConfirmClickListener(null)
                                        .changeAlertType(SweetAlertDialog.ERROR_TYPE);

                                // or you can new a SweetAlertDialog to show
                               /* sDialog.dismiss();
                                new SweetAlertDialog(SampleActivity.this, SweetAlertDialog.ERROR_TYPE)
                                        .setTitleText("Cancelled!")
                                        .setContentText("Your imaginary file is safe :)")
                                        .setConfirmText("OK")
                                        .show();*/
                            }
                        })
                        .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
                            @Override
                            public void onClick(SweetAlertDialog sDialog) {
                                sDialog.setTitleText("Deleted!")
                                        .setContentText("Your imaginary file has been deleted!")
                                        .setConfirmText("OK")
                                        .showCancelButton(false)
                                        .setCancelClickListener(null)
                                        .setConfirmClickListener(null)
                                        .changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
                            }
                        })
                        .show();
                break;
            case R.id.btn_click6:
                new SweetAlertDialog(this, SweetAlertDialog.CUSTOM_IMAGE_TYPE)
                        .setTitleText("Sweet!")
                        .setContentText("Here's a custom image.")
                        .setCustomImage(R.drawable.icon_progress_bar)
                        .show();
                break;
            case R.id.btn_click7:
                final SweetAlertDialog pDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE)
                        .setTitleText("Loading");
                pDialog.show();
                pDialog.setCancelable(false);
                //用几个计时器模拟耗时
                new CountDownTimer(800 * 7, 800) {
                    public void onTick(long millisUntilFinished) {
                        // you can change the progress bar color by ProgressHelper every 800 millis
                        i++;
                        switch (i) {
                            case 0:
                                pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.blue_btn_bg_color));
                                break;
                            case 1:
                                pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_deep_teal_50));
                                break;
                            case 2:
                                pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.success_stroke_color));
                                break;
                            case 3:
                                pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_deep_teal_20));
                                break;
                            case 4:
                                pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.material_blue_grey_80));
                                break;
                            case 5:
                                pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.warning_stroke_color));
                                break;
                            case 6:
                                pDialog.getProgressHelper().setBarColor(getResources().getColor(R.color.success_stroke_color));
                                break;
                        }
                    }

                    public void onFinish() {
                        i = -1;
                        pDialog.setTitleText("Success!")
                                .setConfirmText("OK")
                                .changeAlertType(SweetAlertDialog.SUCCESS_TYPE);
                    }
                }.start();
                break;
            case R.id.btn_click8:
                final SweetAlertDialog sweetAlertDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE);
                sweetAlertDialog.setTitleText("Loading");
                sweetAlertDialog.setCancelable(false);
                sweetAlertDialog.show();

                new CountDownTimer(1000 * 7, 1000) {

                    @Override
                    public void onTick(long millisUntilFinished) {
                        for (int j = 0; j < 7; j++) {
                            sweetAlertDialog.getProgressHelper()
                                    .setBarColor(getResources().getColor(R.color.success_stroke_color));
                        }
                    }

                    @Override
                    public void onFinish() {
                        sweetAlertDialog.setTitleText("成功!")
                                .setConfirmText("OK")
                                .changeAlertType(SweetAlertDialog.SUCCESS_TYPE);

                    }
                }.start();
                break;
        }
    }
}



由于里面我是做了SweetAlertDialog和Freco图片加载框架测试,可以不用理会。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值