2016-07-11 5 views
1

На самом деле моя проблема в том, что когда я нажимаю кнопку «Назад», она показывает dialog, а также в то же время приложение заканчивается без каких-либо операций с ключом? Может ли кто-нибудь решить это?Проблемы в onBackpressed()

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    AlertDialog.Builder ab = new AlertDialog.Builder(this); 
    ab.setMessage("Really want to exit"); 
    ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
     } 
    }); 
    ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      Main.super.onBackPressed(); 
     } 
    }); 
    ab.create(); 
    ab.show(); 
} 

ответ

3

удалить super.onBackPressed(); из метода, держать его в onClick() только

@Override 
public void onBackPressed() { 
    super.onBackPressed(); //remove it 

} 

кажется, что вы выполняете ту же операцию в обеих кнопок, вы должны удалить Main.super.onBackPressed() из negativeButton

ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     super.onBackPressed(); 
    } 
}); 
ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     ab.dismiss(); 
    } 
}); 
2

ли не вызов супер метода onBackPressed.

@Override 
public void onBackPressed() { 

    AlertDialog.Builder ab = new AlertDialog.Builder(this); 
    ab.setMessage("Really want to exit"); 
    ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
     } 
    }); 
    ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 
    ab.create(); 
    ab.show(); 
} 
+0

если я нажимаю нет и приложение не закрыто как ограничить в этой деятельности, если я не нажимать не –

+0

@ A.asha проверить мой обновленный ответ. удалите это ** Main.super.onBackPressed(); ** –

0
try this 
    @Override 
    public void onBackPressed() { 

     AlertDialog.Builder ab = new AlertDialog.Builder(this); 
     ab.setMessage("Really want to exit"); 
     ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       finish(); 
      } 
     }); 
     ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Main.super.onBackPressed(); 
      } 
     }); 
     ab.create(); 
     ab.show(); 
    } 
0

Вам нужно удалить, super.onBackPressed(); из onBackPressed(). то ваша функция должна, как,

@Override 
public void onBackPressed() { 

AlertDialog.Builder ab = new AlertDialog.Builder(this); 
ab.setMessage("Really want to exit"); 
ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     finish(); 
    } 
}); 
ab.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     Main.super.onBackPressed(); 
    } 
}); 
ab.create(); 
ab.show(); 
} 
Смежные вопросы