まとめ新しい状態(State)を追加するまだ電卓にはエラー処理が実装されていません。1÷0=と入力すると「Infinity」と表示されてしまいます。桁あふれのエラー処理もないため、桁あふれしたことが分かりません。Clear)ボタン以外受け付けないように制御したいとおもいます。そのためには新しい状態(State)を追加します。新しい状態(State)を追加するのは簡単です。Stateインタフェースを実装したクラスを追加します。Clear)ボタンが押されたときにエラーをクリアするように実装します。{context.clearA();context.clearB();context.clearDisplay();context.clearError();context.changeState(NumberAState.getInstance());}}[/java]あとは、演算時のエラーを検出したらExceptionを継承したCalcExceptionをスローするように変更します。Doubleの場合、ゼロ割でエラーが発生しないので注意が必要。Doubleの場合、ゼロ割でエラーが発生しないので注意が必要。result;}[/java]上記変更により、CalcクラスのdoOperation()メソッドを呼び出している箇所がエラーになりますので、try-catch文でErrorStateへ遷移するように変更します。{context.setError();context.changeState(ErrorState.getInstance());}}[/java]そのほかのdoOperation()メソッドを呼び出している箇所も同様に修正します。実際に動かしてみましょう。ゼロ割である1÷0=や、桁溢れする9999999×9999999=などを計算してみてください。ErrorStateに遷移するのでACボタン以外反応しなくなることが分かると思います。簡単にエラー状態が追加できることが分かるかと思います。電卓アプリ内部ではErrorStateによりエラー状態であることがわかりますが、Androidアプリ上ではエラーになったことが分かりません。そこでAndroidの通知機能「トースト」を使用してエラーを通知するように機能を追加します。トースト通知の追加トーストとは前面に表示される通知のことです。画面の下方に表示され、自動でフェードイン、フェードアウトされます。トースト表示中も現在の画面が見えたままなので、アプリケーションの操作も可能です。トーストの表示自体は大変簡単です。Calcクラスに追加しましょう。トースト表示用にContextを保持できるようにメンバ変数parentを追加します。setDispメソッドでContextを受け取りparentに設定することにします。Toast表示用にcontextを持つ。Toast表示用にcontextを持つ。parent;}[/java]MainActivityクラスのsetDisp呼び出しも修正しておきます。Toast.LENGTH_LONG).show();}disp.setError();}[/java]実行してみましょう。演算エラーになる操作を行うとERRORの文字が表示されます。AndroidのボタンデザインをXMLで変更する初期状態でのAndroidのボタンは味気ないので、ボタンのデザインを変更してみましょう。ボタンのデザインに画像を使用する事も出来ますが、XMLでシェイプを指定して気軽にデザイン変更をすることが出来ます。ボタンのデザインを用意します。ボタンには、ボタンの押下の有無、フォーカスの有無により合計4つの状態がありますので、それぞれの状態に対してシェイプを指定します。数値のボタン用に黒いデザインを作ってみましょう。ソースは次のようになります。android:width="1dip"android:color="#FF6600"/&gt;&lt;/shape&gt;&lt;/item&gt;&lt;/layer-list&gt;&lt;/item&gt;&lt;/selector&gt;</div>[/xml]このファイルを「/res/drawable-nodip」に配置します。他にも演算操作のボタン用にグレーのデザイン、クリア、オールクリアのボタン用に赤のデザインを用意します。android:startColor="@color/black_start"で色を定義しています。実際の色の指定は「/res/values/color.xml」の中で設定します。File]を開き、color.xmlを作成してください。Project:MyCalcFile:color.xmlリソースタイプ:Valuescolor.xmlに色の定義を追加します。name="push_end"&gt;#2e5400&lt;/color&gt;&lt;/resources&gt;[/xml]作成したデザインをボタンに反映します。main.xmを開き、各ボタンにandroid:background追加してデザインbutton_blackを指定します。フォントサイズ指定android:textSizeと、文字色指定android:textColorも指定します。[/xml]実行してボタンのデザインが変わったことを確認してみましょう。?AndroidではXMLによるシェイプの設定によりこんなに簡単にデザインを変更できるんです。android:background=には画像も指定できるので、さらにグラフィカルな表現にすることも出来ます。今回使用したプロジェクトファイルはこちらからダウンロードできます。一般の電卓にはメモリー機能のボタンや%のボタンがあります。これらを追加するには状態遷移の追加が必要になりますがStateインタフェースの導入により容易にコーディング出きるでしょう。%ボタンの処理を追加するには新しい「状態依存の処理」を追加することになるでしょう。このばあいStateインタフェースにメソッドを追加することになります。それによりStateインタフェースを実装しているクラスすべてに修正が必要です。修正クラスが多くなり大変ですが、うっかりメソッドの追加を忘れてもコンパイルエラーとなり知らせてくれるので、実装漏れの心配が無くなります。Stateパターンを使っていなかったとしたらどうでしょうか。従来ながらの手法、フラグとif文でコーディングする方法であれば、処理の実装漏れをしてもバグが発生するまで気づかないことでしょう。Stateパターンは安全に機能拡張を行える優れた手法であると言えるでしょう。まとめ電卓のベース処理ロジックにはGoFのデザインパターン「Stateパターン」を適用します。状態遷移を表現するには「Stateパターン」が有効です。「Stateパターン」により、機能追加により状態が増えた場合にも修正が少なくて済みます。Androidアプリ開発では画面デザインをXMLで作成することができます。プログラムの完成後にデザインを変更する場合も、プログラム本体に修正を加えることなく、XMLの修正だけでデザインを変更できます。ユーザのフィードバックが不要なちょっとしたメッセージはToast通知を使用します。itLinkedInPocketCopyAndroidが対応している暗号化と、iOS(iPhone,iPad)が対応している暗号化方式を比較してみた。(x86)エミュレータを動かす時のポイントAndroid4.1のAtomエミュレータを動かす時のポイント。本稿は次の読者を対象としています。Wearエミュレータと実機をUSBデバッグ接続するちょっとわかりずらかったのでメモ。画面レイアウトファイルの格納先はapp/res/layoutです。発表したのでテスターになってみたGoogleがスマートウォッチOSを発表しましたね。コメントをキャンセルメールアドレスが公開されることはありません。著書ベストセラーが新しいレイアウトエディタに対応して大改訂。