Android 基本知识(一)

Activity 组件认识

  1. 启动Activity
    • 启动另一个Activity
    • 通过Action启动
        findViewById(R.id.btnGo).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 启动 new Activity
                // startActivity(new Intent(MainActivity.this,Main2Activity.class));

                // 启动一个 Action
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com")));
            }
        });
  1. 怎样在多个Activity之间传递参数
    • 传递简单的数据
    • 传递复杂的数据
    • 传递自定义值对象
    • 传递返回值

MainActivity




             @Override
            public void onClick(View v) {

                Intent intent = new Intent(MainActivity.this,Main2Activity.class);

                // 传递自定义对象 使用Parcelable
                UserInfo info = new UserInfo("playgame");
                intent.putExtra("detail",info);

                // 传递自定义对象,使用Serializable
                MoreInfo moreInfo = new MoreInfo("luo");
                intent.putExtra("family",moreInfo);

                // 复杂数据
                Bundle bundle = new Bundle();
                bundle.putString("name","xuqi");
                bundle.putInt("age", 28);
                intent.putExtra("info", bundle);
                // 简单数据

                intent.putExtra("msg","hello");

                // 启动 new Activity
                // startActivity(intent);

                startActivityForResult(intent,2);
                }

MainActivity2

        final Intent intent = getIntent();

        // 取复杂数据
        String name = intent.getExtras().getBundle("info").getString("name");

        // 取简单的数据对象
        String msg = intent.getExtras().getString("msg");

        // 取自定义的数据对象
        UserInfo detail = intent.getParcelableExtra("detail");

        MoreInfo familyInfo = (MoreInfo) intent.getSerializableExtra("family");

        ((TextView) findViewById(R.id.tvMsg)).setText(msg + "\n" + name + "\n" + detail.getFavorite() + "\n" + familyInfo.getWife());

        findViewById(R.id.btBack).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent1 = new Intent();
                intent1.putExtra("returninfo","nihao");
                setResult(1, intent1);
                finish();
            }
        });

UserInfo

public class UserInfo implements Parcelable{

    public String getFavorite() {
        return favorite;
    }

    public void setFavorite(String favorite) {
        this.favorite = favorite;
    }

    private String favorite;

    public UserInfo(String fav) {
        this.favorite = fav;
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(getFavorite());
    }

    public static final Creator<UserInfo> CREATOR = new Creator<UserInfo>() {
        @Override
        public UserInfo createFromParcel(Parcel source) {
            return new UserInfo(source.readString());
        }

        @Override
        public UserInfo[] newArray(int size) {
            return new UserInfo[size];
        }
    };
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值