【问题标题】:parcelable class for nameValuePair?nameValuePair 的可打包类?
【发布时间】:2017-11-24 11:45:05
【问题描述】:

我想将ArrayList<NameValuePair> nameValuePairs 一项活动传递给另一项活动。我为此写了parcelable class

Parcelable Class:

/**Getters/Setters have been removed to make reading easier*//

    public class BasicNameValuePair  implements Parcelable {
        private String name;
        private String value;



     public BasicNameValuePair(String name, String value){
            this.name = name;
            this.value = value;
        }

        protected BasicNameValuePair(Parcel in) {
            name = in.readString();
            value = in.readString();
        }

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

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

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

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

我的第一个发送数据的活动:

ArrayList<com.example.ss.myapplication.BasicNameValuePair> nameValuePairs;
        nameValuePairs = new ArrayList<com.example.ss.myapplication.BasicNameValuePair>();
        nameValuePairs.add(new com.example.ss.myapplication.BasicNameValuePair("name",value));
        nameValuePairs.add(new com.example.ss.myapplication.BasicNameValuePair("name1", value1));

Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                intent.putParcelableArrayListExtra("extraextra", nameValuePairs);
                startActivity(intent);

在我获得 nameValuePair 的第二个活动中

 ArrayList<com.example.ss.myapplication.BasicNameValuePair> testing = this.getIntent().getParcelableArrayListExtra("extraextra");


 for (com.example.ss.myapplication.BasicNameValuePair n : testing) {
            String name = n.getName();
            String value = n.getValue();
            System.out.print("name" + name + "value:" + value);
        }

但是,当我想添加数据 nameValuePairs 时出现错误。

BasicNameValuePair(android.os.Parcel) in BasicNameValuePair cannot be applied  to (java.lang.String, java.lang.String)

我应该如何更改我的 BasicNameValuePair 类?

【问题讨论】:

  • 在 BasicNameValuePair 中创建构造函数
  • ` public BasicNameValuePair(String name, String value){ this.name = name; this.value = 值; }` 我在 BasicNameValuePair 中创建了这个。现在,没有错误,但 arraylist 无法传递第二个活动。 @Tauqir
  • 请用新代码更新代码
  • 我更新了@Tauqir
  • 您的代码看起来不错,您是否尝试过调试。

标签: java android basicnamevaluepair


【解决方案1】:

你没有 getnamegetvalue

public class BasicNameValuePair  implements Parcelable {
    private String name;
    private String value;

    public String getName() {
        return name;
    }

    public String getValue() {
        return value;
    }

********************* etc*****************
}

【讨论】:

  • 是的,我有 getter 和 setter。我写在这里不是为了让阅读更容易。
猜你喜欢
  • 1970-01-01
  • 2015-11-29
  • 2012-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多