1

私はフラグメントを使用していますが、戻るボタンを検出してアプリの終了を停止し、何か他のことをしたいと考えています。しかし....私が試したすべてのコードは機能しません:関数にブレークポイントを付けてデバッグモードでテストしましたが、戻るボタンを押してアプリを終了すると、それらのどれも呼び出されないようです。

       public class MyListFragment extends Fragment implements OnTouchListener, OnFocusChangeListener, OnClickListener, OnKeyListener{

// Test 1   
         public boolean onKeyDown(int keyCode, KeyEvent event) {
                    String a=null;
                    switch(keyCode)
                    {
                    case KeyEvent.KEYCODE_CAMERA:
                     Toast.makeText(getActivity(),"Pressed Camera Button",                             Toast.LENGTH_SHORT).show();
                        return true;
                    case KeyEvent.KEYCODE_1:
                     Toast.makeText(getActivity(), "Pressed 1", Toast.LENGTH_SHORT).show();
                        return true;
                    case KeyEvent.KEYCODE_HOME:
                     Toast.makeText(getActivity(), "Pressed Home Button", Toast.LENGTH_SHORT).show();
                        return true;
                    case KeyEvent.KEYCODE_BACK:
                     Toast.makeText(getActivity(), "Pressed Back Button", Toast.LENGTH_SHORT).show();
                        return true;
                    }
                    if (keyCode == KeyEvent.KEYCODE_BACK)
                    {
                    a=a;
                    }
                    return false;
                }
// Test 2
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        String b=null;
        b=b;

        return false;
    }
// Test 3    
    public void onBackPressed() {
        String b=null;
        b=b;    
    }
// Test 4    
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        String b=null;
        b=b;
        return false;   
    }
    }

なぜ何も機能しないのか、アイデアはありませんか?

4

2 に答える 2

0

Fragments間を移行するときは、FragmentTransactionの一部としてaddToBackStack()を呼び出します。

FragmentTransaction tx = fragmentManager.beginTransation();
tx.replace( R.id.fragment, new MyFragment() ).addToBackStack( "tag" ).commit();

より詳細な制御が必要な場合(つまり、一部のフラグメントが表示されている場合、戻るキーを抑制したい場合)、フラグメントの親ビューにOnKeyListenerを設定できます。

fragment.getView().setOnKeyListener( new OnKeyListener()
{
    @Override
    public boolean onKey( View v, int keyCode, KeyEvent event )
    {
        if( keyCode == KeyEvent.KEYCODE_BACK )
        {
            return true;
        }
        return false;
    }
} );
于 2013-03-08T09:54:21.143 に答える
0

この方法では、の解が得られますActivity

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
}
于 2013-03-08T07:30:56.450 に答える