java-Eclipseエラー質問

このQ&Aのポイント
  • Eclipse SDKを使用して、Androidのアプリの開発練習をしています。エラーが出てしまい解決方法を数日間検索しているのですが、見当たらず、わからないので、質問させていただきます。
  • エラーは`メソッド decodeResource(Resources, Object) は型 String で未定義です。`と表示されます。
  • 使用しているバージョンはEclipse SDK Version: 4.2.2 Build id: M20130204-1200です。
回答を見る
  • ベストアンサー

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){ } } よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

> private static final String BitmapFactory = null; ここで、String型のBitmapFactoryというクラス変数を宣言しています。String型にはdecodeResource()というメソッドがありませんから、エラーになるのは当然です。 AndroidならBitmapFactoryは変数ではなくクラス名だと思うので、上記の行を消して、代わりに必要なimport文を追加してください。

kmwrod
質問者

お礼

ありがとうございます。 やってみます。

関連するQ&A

  • 【Flash馬鹿のJava】連番画像ファイルの読込について

    【Flash馬鹿のJava】連番画像ファイルの読込について 対象バージョン:J2SE1.6 / Android1.6 はじめましてFlash馬鹿です。Java初心者です。 連番画像ファイルを一気に読み込みたいのですが、方法が分かりません。 Flashでいうところの for(i=1;i<100;i++){ this["loadmc" + i].loadMovie("image" + i + "png") } みたいなことがしたいです。 private Bitmap image1; private Bitmap image2; private Bitmap image3; image1 = BitmapFactory.decodeResource(r, R.drawable.image1); image2 = BitmapFactory.decodeResource(r, R.drawable.image2); image3 = BitmapFactory.decodeResource(r, R.drawable.image3); だといけますが private ArrayList<Bitmap> image; image.add(BitmapFactory.decodeResource(r, R.drawable.image1)); image.add(BitmapFactory.decodeResource(r, R.drawable.image2)); image.add(BitmapFactory.decodeResource(r, R.drawable.image3)); にするとAndroid1.6のシミュレータが落ちます。 また、連番の画像リソースを指定する方法("image" + i + "png")も分かりませんので 教えていただけると幸いです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Androidアプリ開発に関する質問です。

    Androidアプリ開発に関する質問です。 Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.xxx); という記述でres/drawable-hdpi/xxx.png の画像を持ってくることができると思うのですが、 データベースに保存したString型のxxxを使って動的に画像を表示する方法が分かりません。 データベースから画像名を持ってくる前に、String型の変数(仮にstrとする)に画像名を入れて、 Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.str); と記述してもstrを変数として扱ってくれません。 どなたかres/drawable/の画像を動的に持ってくる方法を教えて頂けないでしょうか。

    • ベストアンサー
    • Java
  • プログラミングお願いします(JAVA)

    フィールドとして、「ナンバー」「ガソリン残量」「走行距離」「エンジンの排気量」の4つ、それらの値を表示するメソッド4つから構成されるCar2ラスを作成し、メインメソッドで2つのオブジェクトkcar と bcar を作成し、それぞれに、次の値を代入し、Car2ラスのメソッドを呼び出してそれぞれの値を表示するプログラムを作成しなさい オブジェクト名  ナンバー   ガソリン残量        走行距離   排気量 kcar        552        25.1            22000      2000 bcar        441        33.5           9940        2000 //↓一応自分が書いたコードなので会ってるか分かりませんが、違ってたら教えてください Car2 { int num; double gas; int m; int h; int num1; double gas1; int m1; int h1; void show() { System.out.println("kcar"+num+ +gas+m+h); System.out.println("bcar"+num1+ +gas1+m1+h1); } } class Sample1 { public static void main(String[] args) { Car2 car1; car1 =new Car2(); car1.num=552; car1.gas=25.1; car1.m=22000; car1.h=2000; car1.num1=441; car1.gas1=33.5; car1.m1=9940; car1.h1=2000; car1.show(); } }

  • プログラミングお願いします(java)

    問題 フィールドとして、「ナンバー」「ガソリン残量」「走行距離」「エンジンの排気量」の4つ、それらの値を表示するメソッド4つから構成されるCar2ラスを作成し、メインメソッドで2つのオブジェクトkcar と bcar を作成し、それぞれに、次の値を代入し、Car2ラスのメソッドを呼び出してそれぞれの値を表示するプログラムを作成しなさい オブジェクト名  ナンバー   ガソリン残量        走行距離   排気量 kcar        552        25.1            22000      2000 bcar        441        33.5           9940        2000 ↓一応自分のコードを作成しました・しかしこの問題にあってるか分かりません。違ってたら指摘してください///出来たらコード作成してくださると助かります class Car2 { int num; double gas; int m; int h; int num1; double gas1; int m1; int h1; void show() { System.out.println("kcar"+num+ +gas+m+h); System.out.println("bcar"+num1+ +gas1+m1+h1); } } class Sample1 { public static void main(String[] args) { Car2 car1; car1 =new Car2(); car1.num=552; car1.gas=25.1; car1.m=22000; car1.h=2000; car1.num1=441; car1.gas1=33.5; car1.m1=9940; car1.h1=2000; car1.show(); } }

  • androidアプリのlistviewについて質問

    現在Listviewにてテキストと画像を表示させています。 各行をクリックした時に、それぞれ別のActivityに移行させたいのですが、 初心者の為、悪戦苦闘しています。 わかる方がいましたら、アドバイスをお願い致します。 現在のソースは以下のとおりで、各行をタッチしても何も起こらない状況です。 public class CustomListViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bitmap image; image = BitmapFactory.decodeResource(getResources(), R.drawable.tb); Bitmap image2; image2 = BitmapFactory.decodeResource(getResources(), R.drawable.tb2); Bitmap image3; image3 = BitmapFactory.decodeResource(getResources(), R.drawable.tb3); List<CustomData> objects = new ArrayList<CustomData>(); CustomData item1 = new CustomData(); item1.setImagaData(image); item1.setTextData("1行目のテキスト"); CustomData item2 = new CustomData(); item2.setImagaData(image2); item2.setTextData("2行目のテキスト"); CustomData item3 = new CustomData(); item3.setImagaData(image3); item3.setTextData("3行目のテキスト"); objects.add(item1); objects.add(item2); objects.add(item3); CustomAdapter customAdapater = new CustomAdapter(this, 0, objects); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(customAdapater); } protected void onListItemClick(ListView l, View v, int position, long id) { switch (position) { case 0: startActivity(new Intent(this, ItemDetailActivity.class)); break; case 1: startActivity(new Intent(this, ItemDetailActivity.class)); break; case 2: startActivity(new Intent(this, ItemDetailActivity.class)); break; } } }

  • パッケージのエラーについて

    パッケージのエラーについてなのですが、コンパイルできずにいます。 C:\java\13\r内に Car.java rensyu1.javaをおいています。 コマンドプロンプトには C:\java\13> と表示させています。classpathの設定はしていません。 システム内の環境設定はしました。 ------------------------Car.java package r; class Car { private int num; private double gas; public Car() { num = 0; gram = 0.0; System.out.println("車を作成しました。"); } public void setCar(int n, double g) { num = n; gram = g; System.out.println("ナンバー:" + number + "ガソリン:" + gas + "です。"); } public void show() { System.out.println("車のナンバーは" + number + "です。"); System.out.println("ガソリン量は" + gram + "です"); } } -------------------------------------rensyu1.java package r; class rensyu1 { public static void main(String args[]) { Car car1 = new Car(); car1.show(); } } やさしいjavaという本を参考にしていまして 教科書どうりですと javac r\rensyu1.java java r.rensyu1でコンパイルできるはずでしたが 「シンボルを見つけられません」というエラーが出ます。 気になるのが、ファイルr内にCar.classがありません。 他にもjavac -classpath . rensyu1.java を入力してみましたが、こちらは 「無効なフラグです」というエラーがでます。 教えていただけると助かります。宜しくお願いします。

    • ベストアンサー
    • Java
  • 現在AndroidSDKにてゲームを製作して

    いるのですが、ゲーム画面は出来ているのですが、ゲームスタート画面、ゲームオーバー画面を作りたいのですがどうすればよろしいのでしょうか、スタート画面はタッチされたらゲーム画面に切り替わるようにしたいです。 ソースは メインアクティビティーは package android.game; import android.os.Bundle; import android.app.Activity; import android.widget.LinearLayout; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout l = new LinearLayout(this); setContentView(l); l.addView(new textview(this, null, 0)); l.addView(new PView(this, null, 0)); } } で、ゲーム画面のクラスは package android.game; import android.annotation.SuppressLint; import android.content.Context; import android.game.R.id; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; import android.widget.Toast; import java.util.Random; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Paint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import java.util.Random; public class PView extends View{ Paint paint = new Paint(); int player = 0; int playerV = 20; int tamaV = 20; int x = 100; int y = 50; int tamaY = player; int tamaX = player; int line = 550; int tama2X = 0; int tama2Y = 0; int linex = 400; int cnt = 0; int score = 0; int timerT = 30; int flg = 0; int stx = 200; int sty = 200; Random rand = new Random(); Resources res = this.getContext().getResources(); Bitmap bg = BitmapFactory.decodeResource(res, R.drawable.haikei); Bitmap pl = BitmapFactory.decodeResource(res, R.drawable.player); Bitmap tama = BitmapFactory.decodeResource(res, R.drawable.tama); Bitmap tama2 = BitmapFactory.decodeResource(res, R.drawable.tama2); Bitmap lineview = BitmapFactory.decodeResource(res, R.drawable.line); Bitmap lineview2 = BitmapFactory.decodeResource(res, R.drawable.line2); public PView(Context context,AttributeSet attrs,int defStyle) { super(context,attrs); // TODO 自動生成されたコンストラクター・スタブ } @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas c){ timerT--; if(timerT < 0) { timerT = 0; } player += playerV; if(player<0 || 400<player) playerV *= -1; //弾の処理 tamaY+= 0; tama2Y += 20; if(tamaY > getHeight()) { tamaY = rand.nextInt(500)+1; } tamaX = rand.nextInt(30); tama2Y += 20; if(tama2Y > getHeight()) { tama2Y = rand.nextInt(500)+1; } tama2X = rand.nextInt(100); c.drawBitmap(bg,0,0,paint); c.drawBitmap(pl,player,y, paint); c.drawBitmap(tama,player,tamaY,paint); c.drawBitmap(tama2,tama2X,tama2Y, paint); c.drawBitmap(lineview,0,line,paint); c.drawBitmap(lineview2,0,linex, paint); invalidate(); } public boolean onTouchEvent(MotionEvent me) { //タッチされた時 if(me.getAction() == MotionEvent.ACTION_DOWN) stx = 0; { if(me.getAction() == MotionEvent.ACTION_DOWN) { if(tamaY >= line && tamaY < line + 40) { tamaY = 0; score+= 10; } } if(me.getAction() == MotionEvent.ACTION_DOWN){ if(tama2Y >= linex && tama2Y < linex + 50) { tama2Y = 0; score+= 20; } } return true; } } } このようになっています。 よろしくお願いします

  • クリックして画像を変え、一定時間経過後もとに戻す

    androidアプリを作成している初心者です。 画像をクリックすると画像が変わるようになるようにしたいと思ってます。 画像を変えるところまではできたのですが、 一定時間経過後にもとに戻すにはどうしたらいいかがわかりません。 以下、ソースコード。 public class MainActivity extends Activity { ImageView iv; Bitmap bmp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setGravity(Gravity.CENTER); setContentView(ll); //画像表示 iv = new ImageView(this); bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ikari); iv.setImageBitmap(bmp); ll.addView(iv); //画像をクリックした時に関数を呼び出す iv.setOnClickListener(new img_ac()); } //画像を変える class img_ac implements OnClickListener { public void onClick(View v) { ImageView tmp = (ImageView) v; tmp.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)); } } } 一定時間経過後に元の画像に戻すには、どのようにしたら良いのでしょうか。

    • ベストアンサー
    • Java
  • ローカル変数にアクセスする複数のスレッドの振る舞いについて

    早速ではございますが、質問をさせていただきます。 以下のコード中のMonitorクラスを複数のスレッドが 共有して自由に入り込んでいるにも関わらす、 排他制御をしていないのにBROKENと表示されません。 final class Main { private final static int NUM = 10; public static void main(String[] args) { Monitor m = new Monitor(); UserThread[] ut = new UserThread[NUM]; Thread[] t = new Thread[NUM]; for(int i=0;i<NUM;i++) { ut[i] = new UserThread(m); t[i] = new Thread(ut[i]); t[i].start(); } } } final class UserThread implements Runnable { private final Monitor m; public UserThread(Monitor m) { this.m = m; } public void run() { System.out.println (Thread.currentThread().getName()+" BEGIN"); while(true) { this.m.func(); } } } final class Monitor { public void func() { int i1 = 0; int i2 = 0; i1++; i2++; if(i1 != i2) { System.out.println ("***** BROKEN ***** " +i1+"と"+i2); } } } 動作確認を2日間くらい行っているのですが、それでも BROKENと表示してくれません。javaの処理系によって 振る舞いがことなるかもしれませんので一概には言えませ んが、いったいなぜBROKENと表示しないのでしょうか? どうかご教授のほどよろしくお願いします。

    • ベストアンサー
    • Java
  • listviewの画面遷移について

    初心者です。 現在カスタムlistviewにて各行に画像とテキストを表示させており、各行をクリックした時に別のActivityに移行させたいのですが、下記ソースにてクリックしても何も動作がしない状態です。 どうかご指南をお願い致します。 public class CustomListViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bitmap image; image = BitmapFactory.decodeResource(getResources(), R.drawable.tb); Bitmap image2; image2 = BitmapFactory.decodeResource(getResources(), R.drawable.tb2); Bitmap image3; image3 = BitmapFactory.decodeResource(getResources(), R.drawable.tb3); List<CustomData> objects = new ArrayList<CustomData>(); CustomData item1 = new CustomData(); item1.setImagaData(image); item1.setTextData("1行目のテキスト"); CustomData item2 = new CustomData(); item2.setImagaData(image2); item2.setTextData("2行目のテキスト"); CustomData item3 = new CustomData(); item3.setImagaData(image3); item3.setTextData("3行目のテキスト"); objects.add(item1); objects.add(item2); objects.add(item3); CustomAdapter customAdapater = new CustomAdapter(this, 0, objects); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(customAdapater); } protected void onListItemClick(ListView l, View v, int position, long id) { switch (position) { case 0: startActivity(new Intent(this, Item1Activity.class)); break; case 1: startActivity(new Intent(this, Item2Activity.class)); break; case 2: startActivity(new Intent(this, Item3Activity.class)); break; } } }

専門家に質問してみよう