[英]How to pass NameValuePair to another activity in android?
I have three activities in my application. 我的申请中有三个活动。 A
->
B
->
C
A
->
B
->
C
In Activity A
: I am getting some data from user and add those data NameValuePair. 在Activity A
:我从用户那里获取了一些数据,并添加了这些数据NameValuePair。 I do some other operations in Activity B
. 我将在Activity B
执行其他一些操作。 After that in Activity C
, I want to http post NameValuePair. 之后,在Activity C
,我要http发布NameValuePair。 However, I cannot pass NameValuePair one class to another. 但是,我不能将NameValuePair传递给另一个类。
I tried this solution: solution 我尝试了以下解决方案: 解决方案
In Activity A
: 在Activity A
:
ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("name", name));
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putParcelableArrayListExtra ("nvp", (ArrayList<? extends Parcelable>) nameValuePairs);
startActivity(intent);
}
});
BasicNameValuePair.java
: BasicNameValuePair.java
:
public class BasicNameValuePair implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<BasicNameValuePair> CREATOR
= new Parcelable.Creator<BasicNameValuePair>() {
public BasicNameValuePair createFromParcel(Parcel in) {
return new BasicNameValuePair(in);
}
public BasicNameValuePair[] newArray(int size) {
return new BasicNameValuePair[size];
}
};
private BasicNameValuePair(Parcel in) {
mData = in.readInt();
}
}
I get an error in my Activity A:
我的Activity A:
出现错误Activity A:
Error:(57, 94) error: incompatible types: ArrayList<NameValuePair> cannot be converted to ArrayList<? extends Parcelable>
How can I pass NameValuePair another activity? 如何通过NameValuePair进行其他活动?
For this problem, you have to make singleton class 对于此问题,您必须进行单例课程
that is DataHolder class 那是DataHolder类
public class DataHolder {
public static final String TAG = "DataHolder";
private static DataHolder mDataHolder;
private ArrayList<NameValuePair> nameValuePairs;
private DataHolder() {
}
/**
* @return the DataHolder object. (This method returns always same object because of DataHolder is a Singleton Class.)
*/
public static synchronized DataHolder getInstance() {
if (null == mDataHolder) {
mDataHolder = new DataHolder();
}
return mDataHolder;
}
public ArrayList<NameValuePair> getNameValuePairs() {
return nameValuePairs;
}
public void setNameValuePairs(ArrayList<NameValuePair> nameValuePairs) {
this.nameValuePairs = nameValuePairs;
}
}
And then call below code for set the data 然后调用下面的代码来设置数据
ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("name", name));
DataHolder dataHolder = DataHolder.getInstance();
dataHolder.setNameValuePairs(nameValuePairs);
& get data where you want 并在需要的地方获取数据
ArrayList<NameValuePair> nameValuePairs;
DataHolder dataHolder = DataHolder.getInstance();
nameValuePairs = dataHolder.getNameValuePairs();
I hope this will work 我希望这会起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.