我正在开发一个回合制游戏应用程序。每个回合后,它会从视图中显示当前轮到谁的提示信息。
但是,如果我按下返回按钮,它将返回到主菜单(上一个活动),但是提示信息仍然会持续显示直到超时。如果我按两次返回键并返回到主屏幕,提示信息将一直显示,直到它们完成。我想实现一个检查或某种方式,在按下返回按钮时取消这些提示信息。我必须在我的视图中执行此操作,我的视图包含所有提示信息和游戏代码,而gameActivity仅具有onCreate以为游戏创建视图。有什么想法吗?
在您的Activity中,您重写了以下方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// do something
yourView.notifyBackPressed();
return false;
}
return super.onKeyDown(keyCode, event);
}
在您的视图中,您需要实现一个方法,例如notifyBackPressed()
。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
super.onBackPressed();
}
生成Toast
Toast toast;
toast = Toast.makeText(getBaseContext(), "消息", Toast.LENGTH_LONG);
toast.show();
取消Toast,您可以使用onKeyDown()或onBackPressed()。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
toast.cancel();
return true;
}
return super.onKeyDown(keyCode, event);
}
//Try with making Toast Global and cancel the toast on Back Pr
Toast mToast = new Toast(ApplicationContext);
public void onBackPressed(){
mToast.cancel();
}
试试这个...
尝试使用 Toast.LENGTH_SHORT 或者 你可以像这样为自定义 Toast 设置持续时间(毫秒)。 自定义 Toast: LayoutInflater inflater = getActivity().getLayoutInflater(); View layoutToast = inflater.inflate(R.layout.custom_toast_layout, (ViewGroup) getActivity().findViewById(R.id.toastcustom));