• 締切済み

Androidアプリ開発

Androidアプリを開発しているのですが、 エミュレータ、実機ともに実行するとプログラムが反映されておりません。 以下のソースを実行すると、 「Hello World!」のみ表示されます。 原因がわからないので、ご教授願えませんでしょうか。 【ソース】 package sib.stringex; import android.app.Activity; import android.os.Bundle; import android.view.Window; public class StringEx extends Activity{ @Override public void onCreate(Bundle bundle){ super.onCreate(bundle); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(new StringView(this)); } } package sib.stringex; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class StringView extends View { public StringView(Context context){ super(context); setBackgroundColor(Color.WHITE); } @Override protected void onDraw(Canvas canvas){ Paint paint= new Paint(); paint.setAntiAlias(true); paint.setTextSize(24); paint.setColor(Color.rgb(0, 0, 0)); canvas.drawText("画面サイズ:"+ getWidth()+ "X"+getHeight(), 0, 60, paint); canvas.drawText("文字幅:"+(int)paint.measureText("A"), 0, 60*2, paint); canvas.drawText("アセント"+(int)paint.ascent(), 0, 60*3, paint); canvas.drawText("ディセント"+(int)paint.descent(), 0, 60*4, paint); paint.setTextSize(24); paint.setColor(Color.rgb(255, 0, 0)); canvas.drawText("24dot", 0, 60*5, paint); paint.setTextSize(32); paint.setColor(Color.rgb(0, 255, 0)); canvas.drawText("32dot", 0, 60*6, paint); paint.setTextSize(48); paint.setColor(Color.rgb(0, 0, 255)); canvas.drawText("32dot", 0, 60*7, paint); } }

みんなの回答

  • wharabi
  • ベストアンサー率0% (0/0)
回答No.4

プロジェクトの新規作成ウィザードでBlancActivityを作成すると、もれなく、「Hello world!」を表示する枠組みが出来上がったと思います。 もし、自動作成されたソースが残っている状況ならば、試しにvaluesフォルダのstrings.xmlにあるhello_world(String)のvalueを変更して実行してみてください。 ここで、エミュレータ等に変更が反映される場合、起動時に呼び出すActivityの設定が違う可能性が有ります。 その場合は、AndroidManifest.xmlの設定を確認してください。 反映されない場合は、念のため実行の構成を確認して見てください。 的外れな回答かもしれませんが、よかったらお試し下さい。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.3

Javaは自動ルーチンで動いています。 その一部を置き換えして、ほしい結果を出しています。 public void onCreate(Bundle bundle){ ここはonCreateを置き換えしています。 super.onCreate(bundle);                ここで本来の処理を呼び出して requestWindowFeature(Window.FEATURE_NO_TITLE);  ここ2行を追加している setContentView(new StringView(this)); View とonDraw も置き換えです。 が、ここで置き換えた3つ(onCreate、View、onDraw)が呼ばれていないです。(おそらく) この3つを呼び出しているActivityとViewのソースを追えばわかるのですが・・・

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.2

>ソースをご確認頂ければわかると思いますが、「Hello World!」と表示するプログラムは書いておりません。 ですよね。 となれば、何も置き換えなかったらデフォルトで設定されているのかも。 置き換えなければならない部分(クラスやメソッド)は全て置き換わっていますか?

sibsib
質問者

補足

>となれば、何も置き換えなかったらデフォルトで設定されているのかも。 >置き換えなければならない部分(クラスやメソッド)は全て置き換わっていますか? 置き換えるという状況がいまいち理解できないんですが、 質問に書いたPGについて、何をどう置き換えてるという認識でしょうか。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

Androidなんて知りませんが、「Hello World!」表示はあなたがプログラムしたのですか? でなければ、問題はソースじゃなくてプログラムが乗っていないんじゃないですか? 確認はどこかに「できてない」箇所があると思ってすべてを確認して下さい。 重箱の隅かもしれません。 私もSEやPG担当でした。あっていると思って見ていると見つからないものです。 第三者がチラッと見てすぐわかるようなところに原因はあるものです。 コンパイラーやOSのバグだったこともありました。

sibsib
質問者

補足

早々のご回答ありがとうございます。 私も汎用系のPGなので、確認はしているつもりでしたが、 まったく見当がつかなかったので、質問させていただきました。 >Androidなんて知りませんが、「Hello World!」表示はあなたがプログラムしたのですか? >でなければ、問題はソースじゃなくてプログラムが乗っていないんじゃないですか? ソースをご確認頂ければわかると思いますが、「Hello World!」と表示するプログラムは 書いておりません。 >コンパイラーやOSのバグだったこともありました。 IDEはEclipseなので、問題ないと思うんですがね。。。

関連するQ&A