簡體   English   中英

獲取錯誤:無法從靜態上下文中引用非靜態方法“getResources()”

[英]getting Error: non-static method 'getResources()' cannot be referenced from a static context

我正在使用 Java 在 Android Studio 上開發 rpg 游戲,並且我在資源管理器的 Drawable 中有 png 圖片。 我正在嘗試將 drawable 轉換為位圖,但出現錯誤。

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;

public class Player implements GameObject{
    private int direction;
    private boolean move;

    public Player(int direction, boolean move){//constructior
        this.direction = direction;
        this.move = move;

        Drawable myDrawable = MainActivity.getResources().getDrawable(R.drawable.down_standing);
        Bitmap downStanding      = ((BitmapDrawable) myDrawable).getBitmap();
    }

    @Override
    public void draw(Canvas canvas){

    }

    @Override
    public void update(){

    }

    public void update(int direction, boolean move){
        this.direction = direction;
        this.move = move;
    }
}

至於 MainActivity:


import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        Constants.SCREEN_WIDTH = dm.widthPixels;
        Constants.SCREEN_HEIGHT = dm.heightPixels;

        setContentView(new GamePanel(this));
    }
}

請幫忙。 非常感謝!!

要調用getResources()你有一個Context引用,你不能靜態調用它,所以這是錯誤的:

MainActivity.getResources()

要實現它,您應該提供一個Context參數,您可以從 Activity 獲取該參數:

public Player(int direction, boolean move, Context context){  //constructior with Context
    this.direction = direction;
    this.move = move;

    Drawable myDrawable = context.getResources().getDrawable(R.drawable.down_standing);  // This is right
    Bitmap downStanding = ((BitmapDrawable) myDrawable).getBitmap();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM