Domanda

What I am doing::

I am trying to check the condition whether to quit the application on back key pressed

What is happening ::

I am able to launch the dialog but immediately the activity is removed before I could make any selection in dialog

How can I resolve this?


public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
           /*FragmentManager.BackStackEntry backEntry=getSupportFragmentManager().getBackStackEntryAt(getFragmentManager().getBackStackEntryCount()-1);
            String str=backEntry.getName();
            Log.d("Back-Name", str);*/


        if(getSupportFragmentManager().findFragmentByTag("HomeFragment")!=null ){
            Log.d("My-Log-Msg","$-before-showDialog-$");
            showGpsDialog();
            Log.d("My-Log-Msg","$-after-showDialog-$");
        }else
        {
            /*Intent intent = getIntent();
            finish();
            startActivity(intent);*/
            ft.replace(R.id.content_frame, fragment1,"HomeFragment");
        }
    }
    return super.onKeyDown(keyCode, event);
}


public void showGpsDialog(){
    //GPS-Dialog
    WillYouQuitAppDialog quitAlert;
    try {
        quitAlert = new WillYouQuitAppDialog();
        quitAlert.show(getSupportFragmentManager(), "GpsAlert_Tag");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        Log.d("My-Log-Msg",e.toString());
        e.printStackTrace();
    }
}
È stato utile?

Soluzione

Use following code:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // your code
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

or use onBackPressed:

@Override
public void onBackPressed() {
    // code of condition or anything else that you want
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top