android参数传递的几种方法

Intent
Intent i=new Intent(当前Activity.this,目标Activity.class);
1.传单值
传入:
i. i.putExtra("名称","数据类型");
startActivity(i)
接收:
Intent i=getIntent();
String val=i.getStringExtra("名字");
2.传Bunlde对象
传入:
(1)
Bunlde b=new Bunlde();
b.putString("键值名称","键值");
i. i.putExtra(b);
(2)
  i. i.putExtra("名称",b);
接收:
  Intent i=getIntent();
(1)
  Bunlde data=i.getExtras();
(2)
  Bunlde data=i.getBunldeExtra("名称");
  String val=data.getString("键值名称");
  //键值不存在的时候,赋默认值
  String val=data.getString("键值名称","默认值");
3.传Model对象
方式一:Serializable:
  传入:
  public class UserModel implements Serializable{}
  i.putExtra("user", new UserModel(strAccount,"test",1));
  接收:
  UserModel user=(UserModel)i.getSerializableExtra("user");
  String userName=user.getUserName();
方式二:Parcelable:
  public class UserModel implements Parcelable {
    protected UserModel(Parcel in) {
      UserId = in.readInt();
      UserName = in.readString();
      Account = in.readString();
    }
    public static final Creator<UserModel> CREATOR = new Creator<UserModel>() {
      @Override
      public UserModel createFromParcel(Parcel in) {
        return new UserModel(in.readString(),in.readString(),in.readInt());
      }
      @Override
      public UserModel[] newArray(int size) {
        return new UserModel[size];
      }
    };
  private int UserId;
  public int getUserId() {return UserId;}
  public void setUserId(int userId) {this.UserId = userId;}
  private String UserName;
  public String getUserName() {return UserName;}
  public void setUserName(String userName) {this.UserName = userName;}
  private String Account;
  public String getAccount() {return Account;}
  public void setAccount(String account) {this.Account = account;}
  public UserModel(String strAccount,String strUserName,int id){
    this.Account=strAccount;
    this.UserId=id;
    this.UserName=strUserName;
    }
    @Override
    public int describeContents() {
      return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
      dest.writeString(getAccount());
      dest.writeString(getUserName());
      dest.writeInt(getUserId());
    }
}
传入:
i.putExtra("user", (Parcelable) new UserModel(strAccount,"test",1));
接收:
UserModel user=(UserModel)i.getParcelableExtra("user");
String userName=user.getUserName();
4.传返回值
1.需要返回的界面
  Intent i=new Intent();
  i. i.putExtra("名称","数据类型");
  setResult(1,i);
  finish();
2.返回界面接收值
  startActivityForResult(i,0);//第一个为数据参数,第二个为请求代码参数
  加下面方法
  @Override
  //requestCode:请求代码
  //resultCode:返回的结果码
  //data:返回的结果数据
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //处理返回回来的数据。
  }

转载于:https://www.cnblogs.com/mrer/p/6742772.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android实现多线程的几种方式有以下几种方法。首先,可以使用Java的Thread类来创建和管理线程。这种方式需要手动创建线程对象,并在run()方法中编写线程的逻辑。其次,可以使用Java的Runnable接口来实现多线程。这种方式需要创建一个实现了Runnable接口的类,并将其作为参数传递给Thread类的构造函数。然后,可以使用Handler类来实现多线程。通过Handler的post()或postDelayed()方法,可以将任务添加到主线程的消息队列中,从而在主线程中执行异步操作。此外,还可以使用AsyncTask类来实现多线程。AsyncTask是Android提供的一个封装好的线程池,可以方便地在后台执行耗时操作,并在主线程中更新UI。通过重写AsyncTask的doInBackground()方法来执行耗时操作,并通过onPostExecute()方法来更新UI。需要注意的是,AsyncTask必须在主线程中创建实例,并且execute()方法也必须在主线程中调用。另外,Android 3.0之后,可以使用executeOnExecutor()方法来实现并发执行多个AsyncTask任务。总结起来,Android实现多线程的几种方式包括使用Thread类、Runnable接口、Handler类和AsyncTask类。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Android——多线程的多种实现方式](https://blog.csdn.net/abliudede/article/details/104891324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Android开发中四种常用的多线程实现方式](https://blog.csdn.net/star_nwe/article/details/130140238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值