2016-07-11 29 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 

} 

看来你是在这两个按钮执行相同的操作,则应该从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

不要删除Main.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) { 

     } 
    }); 
    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

你需要从onBackPressed()删除,super.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(); 
}