2012-08-27 78 views
-1

我想使用移動設備上的後退按鈕使對話框出現問我是否確定要退出?Android使用後退按鈕

public void onBackPressed() { 
    // TODO Auto-generated method stub 

    AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this); 
    dialog.setTitle("Confirm"); 
    dialog.setMessage("Are you sure you want to exit?"); 
    return; 
} 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    EditText text=(EditText)findViewById(R.id.Text); 
    TextWatcher watch=new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 
      onBackPressed(); 
     } 
    }; 
    text.addTextChangedListener(watch); 
} 
+1

是什麼你的問題? – fiddler

回答

2

因爲我認爲你的onBackPressed()是處理android後退鍵的覆蓋方法。

只需將dialog.create().show()添加到您的onBackPressed();即可。

它會顯示AlertDialog ..

而且從afterTextChanged(Editable s)否則刪除onBackPressed();它將調用每次當用戶試圖在EditText輸入一些字符..

更新:

還有一件事你的onBackPressed()應該是這樣的,

@Override 
public void onBackPressed() 
{ 
super.onBackPressed(); 

AlertDialog.Builder dialog = new AlertDialog.Builder(TestActivity.this); 
dialog.setTitle("Confirm"); 
dialog.setMessage("Are you sure you want to exit?"); 
dialog.create().show(); 
} 

如果您沒有更改。

+1

非常感謝你的工作;) – user1602896

+0

現在你可以接受答案,並提高你的聲譽。 – user370305

0

使用此代碼爲返回鍵事件

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

這是警告對話框

private void onBackPressed() { 

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
    alertDialogBuilder.setTitle("Do you really want to exit?"); 
    alertDialogBuilder 
      .setMessage("Click yes to exit!") 
      .setCancelable(false) 
      .setPositiveButton("Yes",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, close 
        // current activity 
        ThisActivity.this.finish(); 
       } 
       }) 
      .setNegativeButton("No",new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id) { 
        // if this button is clicked, just close 
        // the dialog box and do nothing 
        dialog.cancel(); 
       } 
      });    
      AlertDialog alertDialog = alertDialogBuilder.create(); 
      alertDialog.show(); 
} 
0

試試這個。

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) 
    { 
     showDialogForCloseApplication(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

private void showDialogForCloseApplication() 
    { 
     try 
     { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle(getResources().getString(R.string.name)); 
      builder.setMessage("Are you sure you want to exit?") 
       .setCancelable(false) 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
         finish(); 
        } 
       }) 
       .setNegativeButton("No", new DialogInterface.OnClickListener() 
       { 
        public void onClick(DialogInterface dialog, int id) 
        { 
         dialog.cancel(); 
        } 
       }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
0

* 第一種方式: *嘗試通過@Override onKeyDown方法在當前的活動:

第二種方式
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
    if (keyCode == event.KEYCODE_BACK) { 
     showAlert("", "Do you really want to exit?"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

private void showAlert(final String title, final String msg) { 
    AlertDialog.Builder dialouge = new AlertDialog.Builder(CategoriesList.this); 
    dialouge.setMessage(msg); 
    dialouge.setPositiveButton(" Yes ", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 
      CurrentActivity.this.finish(); 
     } 
    }); 
    dialouge.setNegativeButton(" No ", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface arg0, int arg1) { 
     } 
    }); 
    dialouge.show(); 
} 

通過@Override onBackPresed()

public void onBackPresed(){ 

    Log.d(TAG,"inside onBackPressed()"); 
     showAlert("", "Do you really want to exit?"); 
}