gpt4 book ai didi

java - 禁用后退按钮和时间处理程序

转载 作者:行者123 更新时间:2023-12-01 14:29:51 25 4
gpt4 key购买 nike

我有一个游戏测验,如果用户的答案错误,则会弹出一个弹出屏幕并在屏幕上停留 3 秒钟。我和处理程序一起做这个。由于游戏有时间限制,他们想出了解决方案,按后退按钮从屏幕上删除弹出窗口:)并继续前进。所以我禁用了该弹出 Activity 的后退按钮。但是,现在我有另一个问题。看来我的处理程序从最后一次单击开始计算时间,所以如果我单击该弹出屏幕上的后退按钮,处理程序从该单击开始计算时间。如果我再次点击它,它就会从头开始。我尝试点击它 10-12 次,但我的弹出屏幕亮了半分钟。 :) 这不好。如何让我的弹出窗口在他打开期间无论是否单击后退按钮都打开 3 秒?

我的弹出类:

public class WrongAnswer extends Activity{

TextView wrong;
String correctAnswer, correct;

public final int delayTime = 3000;
private Handler myHandler = new Handler();

public void onUserInteraction(){
myHandler.removeCallbacks(closePopup);
myHandler.postDelayed(closePopup, delayTime);
}
private Runnable closePopup = new Runnable(){
public void run(){
finish();
}
};

@Override
public void onBackPressed() {
//do nothing
}

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.wrong);

Bundle extras = getIntent().getExtras();
if(extras !=null) {
correct = extras.getString("correctAnswer");
}

inicijalizujVarijable();

myHandler.postDelayed(closePopup, delayTime);

}

private void inicijalizujVarijable() {

wrong = (TextView) findViewById(R.id.tvWrong);
Typeface pogresanFont = Typeface.createFromAsset(getAssets(), "Bebas.ttf");
wrong.setTypeface(pogresanFont);
Wrong.setText("Wrong answer!\nCorrect answer is:\n\n" + correct);
}
}

最佳答案

删除这个:

public void onUserInteraction(){
myHandler.removeCallbacks(closePopup);
myHandler.postDelayed(closePopup, delayTime);
}

它会在任何交互中重置您的处理程序,从而导致您所描述的行为。

顺便说一句,将 Activity 专用于此功能似乎相当繁重,我认为您最好使用 Dialog 或类似的东西。

关于java - 禁用后退按钮和时间处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com