2010-11-24 13 views
1

いくつかのビューを持つアクティビティ、ビューを設定するfillView()メソッド(getContentResolverを使用する必要があるため静的ではない)、静的メソッドは、カーソルからランダムに選択してからfillView()メソッドを実行します。もう1つ「静的参照を作成できません」質問

これはfillビューが静的でなくpickRandomが静的であるために問題でした。そのため、クラスのインスタンスを初期化しようとしましたが、今度はinstance.fillView();ラインでクラッシュします。

下記のサンプルコード。どんな助けもありがとう。おそらく、私がしようとしていることを達成するためのもっと簡単な方法があります。

おかげで、 ジョシュ

public class myView extends Activity implements OnClickListener { 


@Override 
    public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.myView); 

fillView(); 

    } 


public void fillView(){ 

    //creates views, runs cursor and applies results to the view created 

} 

public static void pickRandom() { 


      // runs cursor, picks random entry, next I want to apply the result to 
      // view, so I run... 

     myView v = new myView(); 
     v.fillView(); 

     } 
+0

は、私がここに任意の静的メソッドが表示されていない 'getContentResolver()'静的?です。 –

+0

pickRandom()は静的で、fillView()を内部で使用することはできません。 – Josh

+0

したがって、 'myView v'インスタンスを追加しましたが、クラッシュが発生します。 – Josh

答えて

5

静的インスタンス変数を作成し、OnCreateイベントにで設定します。

private static myView instance; 

をOnCreate関数()

instance = this; 

静的pickrandom()

instance.fillView(); 
+0

まだinstance.fillView()にクラッシュします。ビット。 – Josh

+0

エラーを引き起こしていた別の部分をキャッチして、これは今すぐ正常に動作します。 – Josh

+0

大きな助けをいただきありがとうございます! StackOverlfowが再び入ります。 – Josh

0

あなたのpickRandomでは、クラスの新しいインスタンスを作成しようとします。代わりに、次の操作を実行する必要があります。

this.fillView(); 

pickRandomの静的な目的はありません。

、しかし、あなたはこのようなあなたのビューへの参照を渡すことができますいくつかの理由のためにそれが必要な場合:

public static void pickRandom(myView v) { 


    // runs cursor, picks random entry, next I want to apply the result to 
    // view, so I run... 

    v.fillView(); 

} 
+0

これは、他のアクティビティでpickRandomメソッドを利用し、必ず渡すことができるビューを持っているとは限らないため、難しいです。私はthis.fillView()を試してみてください。それは私に "静的な文脈でこれを使うことはできない" – Josh

関連する問題