1

単純なアプリケーションに問題があります。大量のコードを貼り付けたくありません。Zaladujを使用してファイルをロードする必要があるクラスがありますgetResources()

loading_screen = BitmapFactory.decodeResource(Widok.getResources(),R.drawable.loading_screen);

この行でエラーが発生しました:

タイプ View から非静的メソッド getResources() への静的参照を作成できません。

すべてのクラス コードをここに置きます: http://www.pcyra.pl/badpanda
これは Web サイトではなく、私のプロジェクトの単なるフォルダーです。View のインスタンスを MainActivity に作成すると、クラスのZaladuj50 行目にエラーが表示されます。

4

4 に答える 4

5

getResources()は静的メソッドではありません。それを呼び出すには、 View(またはあなたの場合)のインスタンスが必要です。Widokあなたの最善の策は、その上で使用Zaladujを受け入れるクラスにパラメーターを追加することです。ContextgetResources()

private Context context;
public Zaladuj(Context con)
{
    super()
    this.context = con
}

private void downloadResources() 
{
    //
      loading_screen = BitmapFactory.decodeResource(this.context.getResources(),R.drawable.loading_screen);
    //
    int count = 10;
    for (int i = 0; i < count; i++) 
    {
        try { Thread.sleep(1000); } catch (InterruptedException ignore) {}
    }
}
于 2012-09-20T13:22:20.880 に答える
2

getResources()メソッドは ではないため、クラス staticのインスタンスを作成して呼び出すことができるようにする必要があります。Widok

Widok widok = new Widok(context);
BitmapFactory.decodeResource(widok.getResources(),R.drawable.loading_screen);
于 2012-09-20T13:21:41.680 に答える
0

「タイプ View から非静的メソッド getResources() への静的参照を作成できません」というエラーが発生する理由。これは、getResources() メソッドが静的メソッドではないためです。つまり、新しい Widok をインスタンス化する必要があります。

Widok w = new Widok(context);

asnd 次に、そのオブジェクトのリソースを呼び出します

w.getResource();

**編集

これは、アクティビティ クラスに配置するコードです。アプリケーションコンテキストを参照する Widok のコンストラクターにキーワード「this」を渡します。

Widok w = new Widok(this);
loading_screen = BitmapFactory.decodeResource(w.getResources(),R.drawable.loading_screen);
于 2012-09-20T13:28:37.010 に答える
0

エラーは、何が問題なのかを明確に示しています。Widok で呼び出すことはできません。

あなたが活動クラスにいる場合は、電話してください

BitmapFactory.decodeResource(getResources(),R.drawable.loading_screen);

非アクティビティ クラスにいる場合は、アクティビティ コンテキストが必要になります。

あなたがAsyncTaskにいるなら、あなたはこのようなものを書くでしょう

BitmapFactory.decodeResource(context.getResources(),R.drawable.loading_screen);

コンストラクターで正しいアクティビティ コンテキストを渡すようにしてください。

于 2012-09-20T13:22:49.307 に答える