So-net無料ブログ作成
検索選択

予定の入力画面の作成~スケジュール管理ソフトをS!アプリで作ってみよう(その11) [S!アプリ]

nice!(0)  コメント(4)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 4

cross

はじめまして。
最近、S!アプリの開発を試み始め、ettemさんのタコログに辿り付いたものです。

ソースを掲載していただいておりますので、アプリ開発初心者の私はとっても助かっております!!とても勉強になりますし、、はい。

ここまで順にソースを記述、理解、実行を繰り返してきたのですが、ここのMainCanvasクラスで実装されているEventViewクラスは、その12で初めてでてきます。。ちなみにそこのEventView には13で出てくるEventsクラスが。。

13は12の続きって書いてあるんで大丈夫なんですが、11の段階でエミュの真ん中のボタンを押して、予定の入力フォームは表示可能なのでしょうか??
by cross (2009-02-16 01:51) 

ettem

crossさんへ

丁寧に読んでいただきありがとうございます。
S!アプリの記事は、技術的な調査の部分ぐらいしかアクセスがなく、ソースを読んでいただいている人は、ほとんどいない状態なので、とてもうれしいです。

さて、EventViewのクラスですが、ここでは、まだ使うつもりはなく、間違って入れてしまっていました。(ごめんなさい)
記事を修正しました。

また、エミュの真ん中ボタンを押して入力フォームの表示する方ですが、こちらは可能です。(記事にもある通り、本当に表示するだけです。)
by ettem (2009-02-16 22:05) 

cross

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

ここまでのソースを修正しましたが、未だ正常に動作せず、手こずっております。。

MainCanvasについて、その10のときのソースから欠けてしまっている部分があり、ちょっとハマりました。。新旧でソース比較すれば、Eventクラスのprivate変数としての定義、なくなってしまったコンストラクタに気付くと思います。

ここを修正してみれば、コンパイルは正常にできたのですが、実行時にエミュレータにて決定ボタンを押すと、ヌルポが発生してしまいます。。

[UIEvent] Uncaught java.lang.NullPointerException occurred in key event (0) callback of com.ettem.scheduler.MainCanvas

ちなみに、MainCanvas#keyPressed をデバッグにて動作させてみたところ、決定ボタン押下時は以下のような値が入っていました。

int action = getGameAction(keyCode);
// action → 8

if (keyCode == KEY_STAR
|| keyCode == KEY_POUND) {
// keyCode → -20, KEY_STAR → 42,
// KEY_POUND → 35

dateToDisplay.setTime(
calendar.getMovedDateByKeyCode(keyCode)
.getTime());
} else if (action == FIRE){
// action → 8, FIRE → 8

EventForm eventForm
= new EventForm(display, this);
// display → null

display.setCurrent(eventForm);
// ここでヌルポ発生

} else {
dateToDisplay.setTime(
calendar.getMovedDateByAction(
action).getTime());
}

MainCanvasクラスは、Schedulerクラスにてコンストラクタが呼ばれていますが、引数なしコンストラクタが呼ばれています。
以下のコンストラクタをどこかで呼ぶ処理がなければいけないはずなのですが。。

public MainCanvas(Display display) {

}

お手数お掛けしますが、ご教授願いますm(_ _)m


by cross (2009-02-19 23:01) 

ettem

crossさんへ

すみません。まだ、間違いがありました。
EventクラスはMainCanvasでは不要になったので、Eventクラスに関連した部分は削除したつもりでいましたが、paint()の部分を削除し忘れていました。paint()を修正しました。

MainCanvasのコンストラクタを修正したので、Schedulerクラスを修正したのですが、記載するのを忘れていました。
追記しておきました。

ブログを書く時のやり方が良くなかった事に、気がつきました。
開発をダーと進めてしまってから、ブログを書く時に過去の区切りのいい部分のソースを再現しようと、現状のソースを修正したものを作って、ブログに書いていました。これだとミスが入りまくりですよね。(ミスがないと、過信してしまっていました)

他にもミスがないか、その13までは確認しました。
その12ににもミスがありました。orz

残りも、時間を見つけて確認しておきますね。

これに懲りずに、お付き合いください。m(_ _)m
by ettem (2009-02-22 00:53) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。