rel@zx勉強雑記。
AndroidやゲームAIなどの覚書など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こんばんは。
Androidのアプリの覚書など。
今回はBackキー押した際に、ダイアログを表示させ、
すぐに終了させない方法について。
Androidのアプリの覚書など。
今回はBackキー押した際に、ダイアログを表示させ、
すぐに終了させない方法について。
行う手順としては以下のとおりです。
・ダイアログの生成
・終了関数の上書き
・明示的な終了関数の呼び出し
・ダイアログの呼び出し
まず、ダイアログの生成方法について。
ダイアログの生成はonCreateDialog関数を使用します。
ここで、多言語対応についても触れます。 Androidではresディレクトリ以下のvaluesの中にある
strings.xmlを自動的に生成します。
通常はこのstrings.xmlが呼び出されますが、
別の言語に対応させたいときは、resディレクトリの中に
言語に対応したディレクトリを作り、その中にstrings.xmlを作ります。
例えば、英語対応だと values-en となり、
日本語対応だと values-ja のようになります。
strings.xmlの中を見てみると以下のように記述されています。
nameで指定されてるのが変数名、stringsタグで囲んでいる文字列が
実際の値(中身)となります。
各言語のstrings.xmlの記述で異なるのはstringsタグで囲んだ値の部分となります。
英語版では以下のように記述します。
さて、この変数を呼び出す場合は、先ほどのダイアログ処理で行なっているように
R.string.select_yes
のように記述することでOSで設定されてる言語に自動的に置き換わるようになっています。
続いて、終了関数を上書きします。
通常アプリはActivityのfinish関数を呼び出すと明示的に終了させることが出来ます。
明示的にと書きましたが、この関数を呼ばないでBackやホームボタンで
別の画面に戻った際はGCの周期により、この関数が呼ばれる時期が決まります。
ここで、先程生成したダイアログを呼び出します。
上記のようにfinish関数を上書きしたため、通常のようにfinish関数を呼んでも
ダイアログが表示されるようになります。
あとは元々のfinish関数を呼び出す関数を作ります。
ダイアログ生成時のOKボタンを押した時に呼び出されるようになっています。
以上で完了です。
参考サイト様に感謝です!!
参考サイト:
Backボタンで終了ダイアログを出す方法について
http://dohihage.blog.fc2.com/blog-entry-4.html
ダイアログの生成方法について
http://www.techdoctranslator.com/android/guide/ui/dialogs
アプリの多言語化対応について
http://android.roof-balcony.com/resource/lang/
・ダイアログの生成
・終了関数の上書き
・明示的な終了関数の呼び出し
・ダイアログの呼び出し
まず、ダイアログの生成方法について。
ダイアログの生成はonCreateDialog関数を使用します。
static final int DIALOG_YES_NO_MESSAGE = 0; @Override protected Dialog onCreateDialog(int id) { switch(id) { case DIALOG_YES_NO_MESSAGE: return new AlertDialog.Builder(this) .setTitle(R.string.exit_confirm_caption) .setMessage(R.string.exit_confirm) .setPositiveButton(R.string.select_yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // アプリの終了 appFinish(); } }) .setNegativeButton(R.string.select_no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Cancelが押されたら何もしない } }).create(); default: break; } return null; }
ここで、多言語対応についても触れます。 Androidではresディレクトリ以下のvaluesの中にある
strings.xmlを自動的に生成します。
通常はこのstrings.xmlが呼び出されますが、
別の言語に対応させたいときは、resディレクトリの中に
言語に対応したディレクトリを作り、その中にstrings.xmlを作ります。
例えば、英語対応だと values-en となり、
日本語対応だと values-ja のようになります。
strings.xmlの中を見てみると以下のように記述されています。
<string name="select_yes">はい</string>
nameで指定されてるのが変数名、stringsタグで囲んでいる文字列が
実際の値(中身)となります。
各言語のstrings.xmlの記述で異なるのはstringsタグで囲んだ値の部分となります。
英語版では以下のように記述します。
<string name="select_yes">OK</string>
さて、この変数を呼び出す場合は、先ほどのダイアログ処理で行なっているように
R.string.select_yes
のように記述することでOSで設定されてる言語に自動的に置き換わるようになっています。
続いて、終了関数を上書きします。
通常アプリはActivityのfinish関数を呼び出すと明示的に終了させることが出来ます。
明示的にと書きましたが、この関数を呼ばないでBackやホームボタンで
別の画面に戻った際はGCの周期により、この関数が呼ばれる時期が決まります。
ここで、先程生成したダイアログを呼び出します。
@Override public void finish() { showDialog(DIALOG_YES_NO_MESSAGE); }
上記のようにfinish関数を上書きしたため、通常のようにfinish関数を呼んでも
ダイアログが表示されるようになります。
あとは元々のfinish関数を呼び出す関数を作ります。
public void appFinish() { super.finish(); }
ダイアログ生成時のOKボタンを押した時に呼び出されるようになっています。
以上で完了です。
参考サイト様に感謝です!!
参考サイト:
Backボタンで終了ダイアログを出す方法について
http://dohihage.blog.fc2.com/blog-entry-4.html
ダイアログの生成方法について
http://www.techdoctranslator.com/android/guide/ui/dialogs
アプリの多言語化対応について
http://android.roof-balcony.com/resource/lang/
PR
COMMENT FORM
COMMENT