2

アクティビティAに2D配列を設定し、アクティビティBで使用したいと考えています。 オンラインでさまざまな例を見ましたしかし、何も正しく動作することはできません。私の配列構造が通過しているが、内容はnullをしているかのように、それは私には見えます2次元配列を1つのアクティビティから別のアクティビティに渡す方法(配列に含まれるすべての情報を含む)

次のコードはOKコンパイルが、私はjava.lang.nullpointerexception. の私のトーストにエラーが発生します。 何か助けていただければ幸いです。ここで

は、私がこれまで持っているものです。:

活動A

String[][] Question=new String[100][100]; 

Bundle b = new Bundle(); 
b.putSerializable("questionset", Question); 
Intent intent = new Intent(this, QuizActivity.class); 
startActivity(intent); 

アクティビティB

try{ 

     Bundle b=this.getIntent().getExtras(); 
     String[][] Questions = (String[][]) b.getSerializable("questionset");   
     Toast.makeText(this, Questions[2][1].toString(), Toast.LENGTH_SHORT).show(); 
    } 

    catch(Exception e){ 
    Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); 

    } 

答えて

1

私はシングルトンであるストレージ・オブジェクトのクラスで常にこれらの問題を解決し、どこでそのようなオブジェクトを保存することができます。

public class Model 
{ 
    private static Model instance; 

    private Model() 
    { 
     // singleton implementation 
    } 

    /** 
    * Returns a valid instance of the model. 
    * 
    * @return THE instance of the model. 
    */ 
    public static Model getInstance() 
    { 

     if (instance == null) 
     { 
      instance = new Model(); 
     } 

     return instance; 
    } 

    private String[][] arr; 
    // + getter and setter methods for arr 
} 
+0

おそらく、私はAndroidの/ Javaプログラミングに非常に新しい(3週間)という主な質問に言及していたはずです。言い換えれば、シングルトンは何ですか:S 私が既に持っているものに似た何かに固執していたら、これはタスクを達成するための有効な方法ですか?何が間違っているのですか? – ljsg

+0

シングルトンはデザインパターン[リンク](http://en.wikipedia.org/wiki/Singleton_pattern)です。実際には、シングルトンを使わずに静的なクラスを持つ静的なクラスでのみ行うことができますが、シングルトンは私にとってより良く見えます。上記のコードをコピーして貼り付け、配列arrのgetterメソッドとsetterメソッドを追加するだけです。このクラスを使用するには、たとえばModel.getInstance.getArray()を呼び出します。 –

0
String[][] Question=new String[100][100]; 
Question[2][1]="sample"; // here 
Bundle b = new Bundle(); 
b.putSerializable("questionset", Question); 
Intent intent = new Intent(this, QuizActivity.class); 
intent.putExtras(b); // here 
startActivity(intent); 

あなたのコードでは、配列の内容の初期化と意思に渡すを欠いています。それは意図的ですか?私にとっては、上記のコードはうまくいきます。

+0

私は意図的に私の質問からそのコード部分をかなり厄介なものとして削除しましたが、私は100%確実にすべての配列値が入力されていることを確認しました。 – ljsg

+1

アクティビティAに以下を追加しました。 intent.putExtras(b); 今、私はjava.lang.ClassCastExceptionを取得します:[Ljava.lang.Object;エラー。 前進または後退のステップがあるかどうかわからない:s – ljsg

関連する問題