こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

[android]画面に円が表示されない原因

こんにちは。

以下のサイトを参考に白い画面に赤い円を表示させたいのですが、実際にはエミュレータ上に表示されません。
logcatのエラーもありません。原因と対処方法をご教授ください。

eclipseのバージョンは以下のとおりです。
Eclipse Platform 3.8.0.v20120607-071945-9gF7jI7nG5qByXMVdkhRMWBQlF4PnDCLybDCPQ

http://www.hakkaku.net/articles/20091127-594

★MainActivity.java
package com.example.test001_001;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 描画クラスを設定
setContentView(new TestDrawView(getApplication()));
}
/* 描画用クラス */
class TestDrawView extends View {
public TestDrawView(Context c) {
super(c);
}
}
// このメソッドで描画を行う
protected void onDraw(Canvas c) { // --------- (*1)Check!!
c.drawColor(Color.WHITE);
Paint p = new Paint();
p.setColor(Color.RED);
p.setStyle(Paint.Style.FILL);
c.drawCircle(100, 100, 50, p);
}


}

投稿日時 - 2012-12-14 11:07:11

QNo.7844388

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>Caused by: java.lang.InstantiationException:

これは、オブジェクトのインスタンスを生成できないときに出るエラーです。
原因ははっきりとは分かりませんが、エミュレータの設定の問題かもしれないし、メモリー不足になったかもしれません。


コード自体は問題ありません。実際にこのコードを実装してエミュレータで実行してみましたが問題ありませんでした。

参考にされたサイトには文字を表示するプログラムもありますが、それはうまくいったんでしょうか?

投稿日時 - 2012-12-14 18:12:24

補足

ご回答ありがとうございます。

以下のことは成功しています。
・文字の表示(イタリック、文字の大きさ、色、位置の変更、背景に色をつける)
・クリックしても状態が変化しないボタンの表示
・整数型のデータを単精度浮動小数点型に変換して表示、その逆

現在のところ、以下のことには失敗しています。(スキル不足かもしれませんが)
・図形の描画
・ボタンをクリックすると画面の状態が変わる、他の画面に切り替わる

adt-bundle-windows-x86_64.zipをインストールしたらできないという報告はどのサイトにもないようですが、どうしたらよいのでしょうか。

もし、再インストールの必要があれば、これまでのデータのバックアップと再インストール後のファイルの読み込み方もご教授ください。

宜しくお願い致します。

投稿日時 - 2012-12-15 08:45:48

ANo.1

OnDrawはTestDrawViewクラスの中です。


/* 描画用クラス */
class TestDrawView extends View {
public TestDrawView(Context c) {
super(c);
}
// このメソッドで描画を行う
protected void onDraw(Canvas c) { // --------- (*1)Check!!
c.drawColor(Color.WHITE);
Paint p = new Paint();
p.setColor(Color.RED);
p.setStyle(Paint.Style.FILL);
c.drawCircle(100, 100, 50, p);
}
}

投稿日時 - 2012-12-14 14:01:07

補足

ご回答ありがとうございます。
「// このメソッドで描画を行う」の前の}が1つ多かったんですね。
お恥ずかしい話ですが、ここで問題が発生しました。
Caused by: java.lang.InstantiationException: com.example.test001_001.MainActivity
Viewクラスを理解していないんだと思います。対処方法をご教授ください。宜しくお願い致します。

投稿日時 - 2012-12-14 15:03:29

あなたにオススメの質問