2011年01月17日

ハマった、ハマった

いやあ、この数日またハマりまくりました。
全体的な動作を再び、いや三度、じゃない、四度かな?変更したこともありましたが、今回ハマったのはプログレスダイアログ。
まあ、普通の人はハマらないと思うんですけどね。

今回のハマりどころ。

1.構造的にどこにプログレスダイアログを設定すればいいか分からなかった。
2.ようやく設定したと思ったらプログレスダイアログがでない。(実際は動作実績があったはずの裏で動かす作業の方だった)

まず1番目の問題については、参考書を見ても、ググってみても、出てくる情報としてはProgressDialogをどのように出すかというサンプルで、分かりやすいようにProgressDialogのみに絞って解説されているので、どのように呼び出せばいいのか分からなかったところ。
RunnableをimplementsしたActivityのonCreate()でProgressDialogのインスタンスをつくり、そのままボタンを設置して、クリックすると時間のかかる処理が動くというのが典型的なものでしたが、メインのクラスのonCreate()にProgressDialogのインスタンスを作ったらアプリ起動と同時に表示されてしまうし、できれば2000行くらいに長くなったメインのクラスからは分離したいところでした。
そこで長〜らく試行錯誤した結果public class SampleProgress extends Activity implements Runnable {}なので、Intentで呼び出すことにしました。
本当に合っているのか分からないけど、一応ActivityだからIntentかな、と。
そして、アプリのタイトルを非表示(requestWindowFeature(Window.FEATURE_NO_TITLE))にし、よく見かけるような元の画面と重なって表示するためにActivityの背景を透明にする方法をググって参考とさせていただき、なんとか表示はできるようになりました。

しかし、第2の問題。
実際の処理を動かしてみると、デバッグモードだとできる(ことがある)のに、そのまま動かすと何も起こらないという珍妙な現象。
ステップバイステップで動かして見ても動作が追えない。(途中で終わってしまう)
これがどーしても分からず、デバッグモードで追えない現象なんて自分には解決不能!と絶望してしまいました。

しかし、それは翌日あっさり解決。
先に値を設定してからThreadをstartさせるべきところを、Threadの後に設定していたケアレスミスでした。
なぜ、デバッグモードだとできることがあったのかは不明。

それにしてもケアレスミスが多くて困ります。
一番多いのはToastの最後に.show()を付け忘れること!
なんとかなりませんかね?
posted by 白虹 at 22:01| Comment(0) | TrackBack(0) | Android開発