2016-05-17 2 views
0

Я хочу показать предупреждающее сообщение при нажатии кнопки андроид-устройства с запросом погоды пользователя, который он уверен или нет. Если пользователь нажмет «Да», тогда он должен перейти к предыдущему. в случае «НЕТ» активность должна возобновиться. Но проблема возникает, когда я нажимаю кнопку «Назад», она выполняет оба действия. Он также перейдет к предыдущему действию и отобразит диалоговое окно предупреждения. Вот мой код .. взгляните на меня и посоветуйте. Спасибо заранее., показывающий диалоговое окно с предупреждением при нажатии кнопки возврата

public void onBackPressed() { 

    super.onBackPressed(); 

    AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 

    alertdialog.setTitle("Warning"); 
    alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
    alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

      Intent intent=new Intent(secAddition.this,addition.class); 
      startActivity(intent); 

      secAddition.this.finish(); 

     } 
    }); 

    alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 
     } 
    }); 


    AlertDialog alert=alertdialog.create(); 
    alertdialog.show(); 



}} 
+0

Dont называть startActivity на BackPress. вы должны вызвать супер OnBackPress. когда нажата аппаратная поддержка. проверьте мой ответ. –

ответ

3

я осваивала slimier типа вещей, пожалуйста, проверьте следующий фрагмент кода

@Override 
    public void onBackPressed() { 
      //super.onBackPressed(); 
      IsFinish("Want to close app?"); 
     } 


    } 

    public void IsFinish(String alertmessage) { 
      DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        switch (which) { 
         case DialogInterface.BUTTON_POSITIVE: 
          android.os.Process.killProcess(android.os.Process.myPid()); 
          // This above line close correctly 
          //finish(); 
          break; 

         case DialogInterface.BUTTON_NEGATIVE: 

          break; 
        } 
       } 
      }; 

      AlertDialog.Builder builder = new AlertDialog.Builder(context); 
      builder.setMessage(alertmessage) 
        .setPositiveButton("Yes", dialogClickListener) 
        .setNegativeButton("No", dialogClickListener).show(); 

     } 
1

удалить

super.onBackPressed(); 

это должно работать ..

как,

public void onBackPressed() { 

AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 

alertdialog.setTitle("Warning"); 
alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 

     Intent intent=new Intent(secAddition.this,addition.class); 
     startActivity(intent); 

     secAddition.this.finish(); 

    } 
}); 

alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 


AlertDialog alert=alertdialog.create(); 
alertdialog.show(); 



}} 
+0

это сработало .. спасибо –

+0

любезно знак как ответ. –

5

Если вы хотите, чтобы показать диалоговое окно предупреждения, не закрывая приложение или очистки стека, вы не должны звонить по телефону super.onBackPressed();

+0

это сработало. благодаря –

1

вы можете писать, как это для вашего кода для работы:

public void onBackPressed() { 
AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 

alertdialog.setTitle("Warning"); 
alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     super.onBackPressed();  
    } 
}); 

alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 


AlertDialog alert=alertdialog.create(); 
alertdialog.show(); 

} 
} 

Нет необходимости начать Activity снова, если вы собираетесь к предыдущему Activity,

В коде, когда вы делаете обратный пресс, super.onBackPressed() вызывается так далее к предыдущему Activity

2

это то, что вы ищете. вам не нужно запускать ActiveAction на спине нажата. Если пользователь выбирает Да, чем назвать супер onBackPress

public void onBackPressed() { 
AlertDialog.Builder alertdialog=new AlertDialog.Builder(this); 
alertdialog.setTitle("Warning"); 
alertdialog.setMessage("Are you sure you Want to exit the tutorial???"); 
alertdialog.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 

    super.onBackPressed(); 

} 
}); 

alertdialog.setNegativeButton("No", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int which) { 
    dialog.cancel(); 
} 
}); 


AlertDialog alert=alertdialog.create(); 
alertdialog.show(); 
}} 
Смежные вопросы