1

我的简单应用程序有问题。我不想粘贴大量代码。我有一堂课Zaladuj,我必须使用getResources().

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

在这一行我有错误:

无法从类型 View 对非静态方法 getResources() 进行静态引用。

我把所有的类代码放在这里:http
://www.pcyra.pl/badpanda 这不是一个网站,它只是我的项目的文件夹。我在 MainActivity 中创建了 View 的实例,错误显示在Zaladuj第 50 行的类中。

4

4 回答 4

5

getResources()不是静态方法。您需要一个View(或Widok在您的情况下)的实例来调用它。您最好的选择是向您的Zaladuj类添加一个参数,该参数接受Context然后使用getResources()

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()方法 is not static,您将需要创建Widok类的实例才能调用它,例如:

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

错误清楚地告诉你出了什么问题。你不能用 Widok 来调用它。

如果您在活动课上,请致电

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

如果您在非活动课程中,那么您将需要活动上下文。

就像你在 AsyncTask 中,那么你会写这样的东西

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

只要确保在构造函数中传递正确的活动上下文。

于 2012-09-20T13:22:49.307 回答
0

您收到该错误的原因是“无法从 View 类型中对非静态方法 getResources() 进行静态引用。” 是因为 getResources() 方法不是静态方法。换句话说,你需要实例化一个新的 Widok

Widok w = new Widok(context);

asnd 然后调用该对象上的资源

w.getResource();

**编辑

这是您放入活动类的代码。您将关键字“this”传递给引用应用程序上下文的 Widok 的构造函数

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