2011-12-29 2 views

ответ

4

Я могу дать вам самый простой ответ, Сделать 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(); 

и наслаждаться

+0

Спасибо, его работа ... – Anand

+0

Ваш прием .... –

+0

@SanatPandey +1 Хороший ответ. – Venky

1

Самый простой способ, чтобы обернуть его в сериализуемой класса и передать его в намерении :)

5

Вы можете использовать AndroidParcelable класса для передачи данных 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 
+0

Я получил Exception «java.lang .ClassCastException: [Ljava.lang.Object; " – Anand

+0

Извините, что ответит поздно. Вы также можете использовать Androids Parcelable Class для Serializable ваших данных. –

0

Вы могли бы сделать его строка за строкой. Не элегантный или эффективный. Но если у вас есть массив i by j, вы можете отправить i массивы длины j самостоятельно, а затем в новом действии вернуть их вместе.

Предполагая, что i и j являются довольно маленькими, что есть.

0

Два способа. 1) Держите его в статической переменной, доступной по отношению к активам. 2) Сделайте это как сериализуемые данные и поместите их в пучок.

+0

, пожалуйста, дайте пример кода для двух способов: – Anand

0

Вы можете использовать putSerializable установить набор ByteArray и использовать getSerializable для retrive Посмотрите на следующий подход

Создать сериализации класс присвоить массив строк и положить, что сериализации в намерении

Шаг 1 Создайте класс Serializable Bean, чтобы установить массив в класс

public class MyBean implements Serializable{ 
    String[][] data = null; 
    public void set2DArray(String[][] data){ 
     this.data = data; 
    } 
    public String[][] get2DArray(){ 
     return data; 
    } 
} 

Шаг-2 в Caller деятельности (Home класс)

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 В Calling активность (второй класс)

Bundle b = getIntent().getBundleExtra("obj"); 
     MyBean dData = (MyBean) b.getSerializable("mybean"); 
     String[][] str =dData.get2DArray(); 
Смежные вопросы