忍者ブログ
rel@zx勉強雑記。 AndroidやゲームAIなどの覚書など。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

こんばんは。
Androidのアプリの覚書など。
今回はBackキー押した際に、ダイアログを表示させ、
すぐに終了させない方法について。

拍手[0回]


行う手順としては以下のとおりです。

・ダイアログの生成
・終了関数の上書き
・明示的な終了関数の呼び出し
・ダイアログの呼び出し

まず、ダイアログの生成方法について。
ダイアログの生成は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
NAME
URL
MAIL
PASS
TITLE
COMMENT
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
TRACKBACK
TRACKBACK URL > 
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
ブログ内検索
最新CM
プロフィール
HN:
rel@zx
職業:
ゲームプログラマー
自己紹介:
2012年より念願のプログラマ修行を開始いたしました。
クマグラマーとして勉強会、Game Jamに出没注意!
Twitter
ゲーマータグ
アクセス解析
DoCrystal

Powerd By DoCrystal
忍者ブログ [PR]
"rel@zx" WROTE ALL ARTICLES.
PRODUCED BY SHINOBI.JP @ SAMURAI FACTORY INC.