java-Eclipseエラー質問
Eclips SDKを使用して、Androidのアプリの開発練習をしています。
エラーが出てしまい解決方法を数日間検索しているのですが、
見当たらず、わからないので、質問させていただきます。
バージョンは
Eclipse SDK Version: 4.2.2
Build id: M20130204-1200
を使用しています。
エラーは
m_Number[0] = BitmapFactory.decodeResource(r, R.drawable.num1);
m_Number[1] = BitmapFactory.decodeResource(r, R.drawable.num2);
m_Number[2] = BitmapFactory.decodeResource(r, R.drawable.num3);
m_Number[3] = BitmapFactory.decodeResource(r, R.drawable.num4);
・・・・・
の位置で、
メソッド decodeResource(Resources, Object) は型 String で未定義です。
と表示されます。
ソースは以下のように作っています。
package com.example.puzzle15;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
//public class MainActivity extends Activity {
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
// }
// @Override
// public boolean onCreateOptionsMenu(Menu menu) {
// // Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
// return true;
// }
//}
//class : PuzzleView
//Abstract : パズルを表示する
public class PuzzleView extends SurfaceView implements SurfaceHolder.Callback{
private static final String BitmapFactory = null;
private Bitmap m_Number[] = new Bitmap[15];
private SurfaceHolder m_holder;
private final int m_PosX[] = { 0, 80, 160, 240 };
private final int m_PosY[] = { 0, 80, 160, 240 };
private final int m_IdxX[] = {0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3};
private final int m_IdxY[] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3};
// コンストラクタ
// サーフェースホルダーとイメージの準備
public PuzzleView(Context context) {
super();
Resources r = getResources(); // 画像リソースの取得
m_Number[0] = BitmapFactory.decodeResource(r, R.drawable.num1);
m_Number[1] = BitmapFactory.decodeResource(r, R.drawable.num2);
m_Number[2] = BitmapFactory.decodeResource(r, R.drawable.num3);
m_Number[3] = BitmapFactory.decodeResource(r, R.drawable.num4);
m_Number[4] = BitmapFactory.decodeResource(r, R.drawable.num5);
m_Number[5] = BitmapFactory.decodeResource(r, R.drawable.num6);
m_Number[6] = BitmapFactory.decodeResource(r, R.drawable.num7);
m_Number[7] = BitmapFactory.decodeResource(r, R.drawable.num8);
m_Number[8] = BitmapFactory.decodeResource(r, R.drawable.num9);
m_Number[9] = BitmapFactory.decodeResource(r, R.drawable.num10);
m_Number[10] = BitmapFactory.decodeResource(r, R.drawable.num11);
m_Number[11] = BitmapFactory.decodeResource(r, R.drawable.num12);
m_Number[12] = BitmapFactory.decodeResource(r, R.drawable.num13);
m_Number[13] = BitmapFactory.decodeResource(r, R.drawable.num14);
m_Number[14] = BitmapFactory.decodeResource(r, R.drawable.num15);
// サーフェースホルダーの生成
m_holder = getHolder();
m_holder.addCallback(this);// サーフェース生成時と変更時、終了時に呼び出してもらう
}
private SurfaceHolder getHolder() {
// TODO Auto-generated method stub
return null;
}
private Resources getResources() {
// TODO Auto-generated method stub
return null;
}
//SurfaceCreated
//サーフェース生成時処理
public void surfaceCreated(SurfaceHolder holder){
}
//SurfaceChanged
//サーフェース変更時処理
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
int m_XOrg;
int m_YOrg;
boolean m_bLand;
if( height > width ){
m_XOrg = (width - 320) / 2;
m_YOrg = 32;
m_bLand = false;
}
else{
m_XOrg = 32;
m_YOrg = (height - 320 ) / 2;
m_bLand = true;
}
m_holder = holder;
Thread m_Thread = new Thread((Runnable) this);
m_Thread.start();
updateView();
Canvas canvas = holder.lockCanvas();
canvas.drawColor(Color.BLACK);
for( int i = 0 ; i < 15 ; i++ ){
canvas.drawBitmap(m_Number[i], m_PosX[m_IdxX[i]], m_PosY[m_IdxY[i]], null);
}
holder.unlockCanvasAndPost(canvas);
}
private void updateView() {
// TODO Auto-generated method stub
}
// SurfaceDestroyed
// サーフェース終了時処理
public void surfaceDestroyed(SurfaceHolder holder){
}
}
よろしくお願いします。
お礼
ありがとうございます! フラグを立ててのスキップは一応やっていたつもりでしたが、スキップする場所が怪しかったようです。 実機で実行が出来ていないのですが、明日試してみます。 私の質問なんぞにご親切に答えていただき、本当にありがとうございました☆