-1

これは私が知っている本当に基本的なことですが、問題が何であるかがわかりません...私がしたいのは、あるクラスの変数の値を「中間」クラスに設定し、それを3番目のクラスで取得することだけです( filterArray は他のクラスからも呼び出されるため、それらすべてに同じデータを読み取らせます)。しかし、もしそうなら:

b =new GetSet()
b.setBdl(extras);
JSONArray arr= getData.filterArray();  

使用して

class GetSet {
  private Bundle params;

  public GetSet() {
    }

  public Bundle getBdl() {
    return this.params;
  }

  public void setBdl(Bundle bdl) {

    params = bdl;
  }
}

次に、filterArray メソッドで、試してみると

       Bundle params = new GetSet().getBdl();

あらゆる種類の実行時エラーが発生します。

Bundle params = GetSet.getBdl();

非静的メソッドへの静的参照を作成できないことがわかります。どこが間違っていますか?

4

2 に答える 2

0

エラーは、間違った方法で使用しているためです

getBdl の署名を見てください。パブリックBundleメソッドは非静的メソッドであるため、クラス名からはアクセスできません。

b である Bean オブジェクトを介してアクセスする必要があります。

2番目のエラーも関連しています。

オブジェクト b を使用して Bean のプロパティを作成/設定しましたが、それにアクセスすると、新しい GetSet().getBdl が再び作成されるため、Null pointer exception

だからこうする

GetSet b=新しい GetSet(); b.setBdl(バンドル オブジェクト);

したがって、bにはbを渡す値が含まれています...

したがって、b を介してバンドルを取得します。別のクラスからアクセスする必要がある場合は、b をそのコンストラクターに渡し、それを取得します

SomeClass class=new SomeClass(b); そのクラスでは、b経由でバンドルを取得できます

それがすべてあなたに役立つことを願っています。

于 2013-05-18T05:05:18.393 に答える