我在创建弹出窗口时遇到了问题。我正在开发一个游戏,想在用户赢得游戏后弹出一个窗口或子菜单,以便用户可以选择退出或重新开始。我看到的所有弹出窗口都是在活动中完成的。我想从我的“控制器”类中完成这个操作,基本上我想检查用户是否在我的逻辑类中获胜,如果他们获胜了,就会弹出一个窗口。我有一种感觉,我需要在我的活动中完成这个操作。如果需要更多详细信息,请告诉我。
您需要在Activity中完成此操作,有两个选项:
1)当您知道游戏结束时,请在“controller”类中编写一个方法来返回是否应该显示弹出窗口,例如isGameWon()。从Activity中调用它并进行相应的响应。
2)在控制器类中保留对Activity的引用,或允许以单例对象的方式访问Activity。当游戏结束时,在控制器类中检查玩家是否获胜,如果是,则在Activity中调用函数来显示弹出窗口,例如showGameWonPopup()。
您无法在UI Activity之外显示弹出窗口。您的两个类需要就游戏结果进行通信,并做出相应的响应。
public class CustomListener implements View.OnTouchListener{
public PopupWindow mPopup;
public TalkButtonListener(Context ctx) {
LayoutInflater inflater = (LayoutInflater)
ctx.getSystemService(ctx.LAYOUT_INFLATER_SERVICE);
mPopup = new PopupWindow(
inflater.inflate(R.layout.popup_layout, null, false),
100,100,true);
}
public boolean onTouch (View v, MotionEvent event){
View v2 = (View) v.getParent();
switch(event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
mPopup.showAtLocation(v2, Gravity.CENTER, 0, 0);
return(false);
case MotionEvent.ACTION_UP:
mPopup.dismiss();
return(false);
default:
return(false);
}
}
}