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
