AndroidのFragmentを使ったbackキー処理の方法

3,963 views
Skip to first unread message

吉田さん

unread,
Dec 23, 2014, 3:42:20 AM12/23/14
to android-g...@googlegroups.com
Androidアプリ開発でFragmentを使った実装を行ったのですが、Activityの

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
  if(keyCode == KeyEvent.KEYCODE_BACK){
    //画面遷移の処理
  }else{
    return false;
  }
}

みたいにバックキー押下時の処理が実装できません。

FragmentTransactionのaddToBackStack(null);を使ってやってみたのですが、これは前回に追加した画面への遷移だったので、思うような動きが出来ませんでした。

やりたいことは、バックキー押下時に指定したFragmentの画面に遷移することです。

onCreateViewの中に
view.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//処理
}
}

をやっても反応なしで行き詰まっています。
結局のところバックキー押下時の処理の仕方を知りたいのですが、いくら調べてもたどり着けませんでした。
宜しくお願いしますm(_ _)m

Hirokazu Fukami

unread,
Dec 23, 2014, 5:01:28 AM12/23/14
to android-g...@googlegroups.com
こんにちはfkmです。

Activityで拾ってFragmentに伝える方法で実現します。

BackListenerは、対象Fragmentで実装しているものとします。
onBackPressed()がtrueを返したら、元々のbackの処理を中断させるようにしてます。

    @Override
    public void onBackPressed() {
        FragmentManager manager = getSupportFragmentManager();
        if (manager == null) {
            super.onBackPressed();
            return;
        }
        Fragment fragment = manager.findFragmentById(R.id.container);
        if (fragment == null) {
            super.onBackPressed();
            return;
        }
        if (!(fragment instanceof BackListener)) {
            super.onBackPressed();
            return;
        }
        BackListener l = (BackListener) fragment;
        if (l.onBackPressed()) {
            // event is consumed
            return;
        }
        super.onBackPressed();
    }




--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

吉田さん

unread,
Dec 23, 2014, 7:32:46 AM12/23/14
to android-g...@googlegroups.com
こんばんは、fkmさん。

おかげさまで解決できました!
一日中悩んでたので、とても助かりました。

本当に有難うございましたm( _ _ )m



2014年12月23日火曜日 17時42分20秒 UTC+9 吉田さん:
Reply all
Reply to author
Forward
0 new messages