我是android编程的新手,在第一个编程中,我试图做一个简单的Pong-Clone。
我的程序是通过不同的方法和我能够自己处理的一点缝合在一起的。
基线:
当我按下“播放”按钮时,它将调用我的“ GameActivity”,该游戏将“ GameView”设置为其ContentView。在GameView内,我处理游戏,球弹跳,玩家和敌人的一切。但是我的问题是,一旦一名球员获胜,如何摆脱困境。
一开始,我只想简单地调用一个对话框,询问玩家是否要再次玩或返回菜单,但是我当然不能做与活动有关的任何事情,因为im在“ GameView”中。如果我尝试这样做,总是告诉我不能,因为“不能从静态上下文中引用非静态方法”。
所以我的GameActivity很简单:
public class GameActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GameView(this));
}
}
首先,我只是将这样的内容放入视图中:
InfoDialog infoDialog = new InfoDialog();
infoDialog.show(getSupportFragmentManager(), "infoDialog");
但据我所知,我无法在View中做到这一点。
TLDR:如何在“活动”中停止或更改ContentView或在该视图内调用对话框?
就像我说的那样,我对Android编程非常陌生,如果对我的操作方式感到困惑,请对不起。
最佳答案
您可以将该活动的上下文保存在GameView构造函数上,并在需要时使用它:
class GameView extends View {
private Context mContext;
//Constructor
public GameView (Context context) {
super(context);
mContext = context
}
//Can be called inside the view
public ShowDialog() {
AlertDialog alertDialog = new AlertDialog.Builder(mContext).create();
alertDialog.setTitle("Alert");
alertDialog.setMessage("Alert message to be shown");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
}