【发布时间】:2011-12-29 15:25:57
【问题描述】:
我是 Android 新手。请告诉我如何从一个活动获取二维字符串数组到另一个活动。 谢谢你
【问题讨论】:
标签: android android-activity multidimensional-array
我是 Android 新手。请告诉我如何从一个活动获取二维字符串数组到另一个活动。 谢谢你
【问题讨论】:
标签: android android-activity multidimensional-array
您可以使用Android Parcelable 类传递Serializable 数据,如Arrays。以下是您的示例。
public class MyParcelable implements Parcelable{
public String[][] strings;
public String[][] getStrings() {
return strings;
}
public void setStrings(String[][] strings) {
this.strings = strings;
}
public MyParcelable() {
strings = new String[1][1];
}
public MyParcelable(Parcel in) {
strings = (String[][]) in.readSerializable();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeSerializable(strings);
}
public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
@Override
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
@Override
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
}
传递给另一个 Activity -
public String[][] strings = new String[1][1];
strings[0][0] = "data";
MyParcelable myParcelable = new MyParcelable();
myParcelable.setStrings(strings);
intent.putExtra("parcel",myParcelable);
startActivity(intent);
检索 -
Intent intent = getIntent();
Bundle b = intent.getExtras();
MyParcelable myParcelable = b.getParcelable("parcel");
strings = myParcelable.getStrings();
Log.d("Your String[0][0] is - ",strings[0][0]+"");
输出 -
12-29 12:49:39.016: D/Your String[0][0] is -(1484): data
【讨论】:
我可以给你最简单的答案,为 getter 和 setter 创建一个可序列化的类,并在应用程序的任何地方使用你的数据:
Class ABC implements Serializable
{
private static final long serialVersionUID = 1L;
String[][] str;
private static ABC singletonObject;
public static ABC getSingletonObject() {
if (singletonObject == null) {
singletonObject = new ABC ();
}
return singletonObject;
}
public void setString(String[][] str)
{
this.str = str;
}
public String[][] getString()
{
return str;
}
}
你可以设置成
ABC s = ABC.getSingletonObject();
s.setString(str);
在另一个活动中
ABC s = ABC.getSingletonObject();
String[][] str = s.GetString();
并享受
【讨论】:
最简单的方法是将它包装在一个可序列化的类中并在意图中传递它:)
【讨论】:
两种方式。 1) 将其保存在可跨活动访问的静态变量中 2) 将其作为可序列化数据并将其放入捆绑包中。
【讨论】:
您可以逐行进行。不优雅也不高效。但是如果你有一个 i by j 数组,你可以单独发送 i 个长度为 j 的数组,然后在新活动中将它们重新组合在一起。
假设 i 和 j 非常小。
【讨论】:
您可以使用 putSerializable 来设置 set bytearray 并使用 getSerializable 来检索 看看下面的方法
创建一个可序列化的类,分配字符串数组并将该可序列化放入意图
Step-1创建一个Serializable Bean Class,将数组设置为该类
public class MyBean implements Serializable{
String[][] data = null;
public void set2DArray(String[][] data){
this.data = data;
}
public String[][] get2DArray(){
return data;
}
}
调用者活动中的第 2 步(家庭类)
Intent intent = new Intent(this, Second.class);
String data[][] = new String[][] {{"1","pavan"},{"2","kumar"},{"3","kora"},{"1","pavan"},{"2","kumar"},{"3","kora333"}};
MyBean bean = new MyBean();
bean.set2DArray(data);
Bundle b = new Bundle();
b.putSerializable("mybean", bean);
i.putExtra("obj", b);
startActivity(i);
第 3 步调用活动(二等)
Bundle b = getIntent().getBundleExtra("obj");
MyBean dData = (MyBean) b.getSerializable("mybean");
String[][] str =dData.get2DArray();
【讨论】: