zoukankan      html  css  js  c++  java
  • Parcelable使用(二)

    简单的Activity间数据传递用Intent,复杂的用Parcelable,举个栗子第一个activity写入Parcel的String类型的name和int类型的age,第二个activity取出Parcel并解析数据

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    MyPerson mMyPerson = new MyPerson();
                    mMyPerson.setName("tom");
                    mMyPerson.setAge(25);
                    Intent mIntent = new Intent(MainActivity.this, Main2Activity.class);
                    Bundle mBundle = new Bundle();
                    mBundle.putParcelable("key", mMyPerson);
                    mIntent.putExtras(mBundle);
                    startActivity(mIntent);
    
    
                }
            });
        }
    }

       

    上面是第一个activity

    public class Main2Activity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
            TextView textView = findViewById(R.id.text);
            MyPerson parcelable = getIntent().getParcelableExtra("key");
            textView.setText("name = " + parcelable.getName() + "  age = " + parcelable.getAge());
    
    
        }
    }

    上面试第二个activity

    public class MyPerson implements Parcelable{
        private String name;
        private int age;
        private static final String TAG = "Text";
        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 static final Parcelable.Creator<MyPerson> CREATOR = new Creator<MyPerson>() {
            @Override
            public MyPerson createFromParcel(Parcel source) {
                Log.d(TAG,"createFromParcel");
                MyPerson mMyPerson = new MyPerson();
                mMyPerson.name = source.readString();
                mMyPerson.age = source.readInt();
                return mMyPerson;
            }
            @Override
            public MyPerson[] newArray(int size) {
    // TODO Auto-generated method stub
                return new MyPerson[size];
            }
        };
        @Override
        public int describeContents() {
    // TODO Auto-generated method stub
            Log.d(TAG,"describeContents");
            return 0;
        }
        @Override
        public void writeToParcel(Parcel dest, int flags) {
    // TODO Auto-generated method stub
            Log.d(TAG,"writeToParcel");
            dest.writeString(name);
            dest.writeInt(age);
        }
    }

    实现Parcelable接口

  • 相关阅读:
    vue-打包文件解析
    vue-动态路由
    vue-代码跳转路由
    vue-<routerl-link>属性补充
    vue-默认路由重定向和路由模式的切换
    vue-配置路由规则和显示路由
    路由器实验之Serial接口的静态路由配置
    交换机实验之交换机基本配置、交换机端口的基本配置、管理MAC地址表
    数据库表结构(字段信息等)导出Word,Excel,HTML,CHM等格式
    《数据库系统概论》学习总结——附件四(数据库实验(ADO.NET实现数据库操作))
  • 原文地址:https://www.cnblogs.com/Ocean123123/p/10955721.html
Copyright © 2011-2022 走看看