Android学習心得②- fragmentでダブルクリック戻りキーを設定してプログラムを終了

3851 ワード

最近作ったソフトウェアはダブルクリックしてキーを返してプログラムの効果を脱退することを実现して、実は最初は私は拒否して、あなたは私に変更させることができなくて、私はすぐに変更して、私が変更した后に更にいくつかの特技をプラスしたくないため、コードの“duang”は少し、とても速くて、とてもキックアスで、このようにユーザーが出てきてきっと私をののしって、このようなソフトウェアが全然なくて、上のそれが偽物であることを证明します.それから私も彼らが确かに実用的であることを证明して、私は1时间ぐらい変えて、感じは悪くなくて、それから私は使う时も彼らに特技をつけないでくださいと要求して、私がユーザーに见せるため、私が使い終わった后にこの様子で、あなた达が使い終わった后にもこの様子です!
よし遊ばないで、次はまじめにしてから私をつまんでインターネットで探して、Androidの中の“もう一度戻るボタンを押してプログラムを終了します”の実現するコードを発見してとても使いやすくて、下は貼り出します
private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){   
        if((System.currentTimeMillis()-exitTime) > 2000){  
            Toast.makeText(getApplicationContext(), "        ", Toast.LENGTH_SHORT).show();                                
            exitTime = System.currentTimeMillis();   
        } else {
            finish();
            System.exit(0);
        }
        return true;   
    }
    return super.onKeyDown(keyCode, event);
}

onKeyDownメソッドを上書きすることによりますが、ひとつ問題があります.これはActivityベースの方法ですが、私のプログラムは主にfragmentベースで、activityは管理されています.のだからこの方法は適用されません
そこで私はまた各种の资料を调べて资料を调べて、fragmentの中でどのようにonKeyDownの方法をカバーすることを発见することができることを望んで、それからすべてfragmentとactivityのデータの伝达を行うことを考えて、幸いにも私は怠け者で、面倒だと感じて、引き続き资料を调べて、まずOverflowの上のFragment activity catch onKeyDown and use in fragmentを见て、私のコードの中に书いて、しかしやはり各种の异常があります.そして資料を調べ続け、最終的に解決策を探しました.
友情提供fragmentリスニング戻りキー
上の文章のコードを修正すると、2回の戻りボタンをクリックしてプログラムを終了することができます~
private View.OnKeyListener backListener = new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK
                    && event.getAction() == KeyEvent.ACTION_DOWN) {
                // ToDo
                if ((System.currentTimeMillis() - exitTime) > 2000) {
                    Toast.makeText(getActivity(), "        ", Toast.LENGTH_SHORT).show();
                    exitTime = System.currentTimeMillis();
                } else {
                    //             
                    BLEDeviceLab.get(getActivity()).saveDevices();
                    mEditor.putString("ip", ipAddress);
                    mEditor.commit();
                    getActivity().finish();
                    System.exit(0);
                }
                return true;
            }
            return false;
        }
    };

「duang」というアプリが完成!病気(精神病)の私を思いやってください(>