我是Android新手。请告诉我如何从一个Activity到另一个Activity获取二维字符串数组。 谢谢
答案 0 :(得分:6)
您可以使用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];
}
};
}
传递给另一项活动 -
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
答案 1 :(得分:4)
我可以给你最简单的答案,为getter和setter创建一个Serializable类,并在你的应用程序的任何地方使用你的数据:
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;
}
}
Yous可以将其设置为
ABC s = ABC.getSingletonObject();
s.setString(str);
在另一项活动中
ABC s = ABC.getSingletonObject();
String[][] str = s.GetString();
并享受
答案 2 :(得分:1)
最简单的方法是将它包装在一个可序列化的类中并在意图中传递它:)
答案 3 :(得分:0)
你可以一行一行地做。不优雅或高效。但是如果你有一个i by j数组,你可以自己发送长度为j的i数组,然后在新的活动中将它们重新组合在一起。
假设i和j非常小,那就是。
答案 4 :(得分:0)
两种方式。 1)将其保存在可跨活动访问的静态变量中2)将其作为可序列化数据并将其放入捆绑包中。
答案 5 :(得分:0)
您可以使用putSerializable设置set bytearray并使用getSerializable进行检索 看看以下方法
创建一个可序列化的类,分配String数组并将其序列化为intent
Step-1 创建可序列化Bean类以将数组设置为类
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();