0

我正在开发一个棋盘游戏应用程序(类似于国际象棋)。我有一个活动 GameBoardActivity ,它监听 GridView 上的点击,并且在每次点击时调用来自类 Game 的函数来处理应该发生的事情。

在类 Game 中包含有关棋子在哪里以及Move(int xFrom, int yFrom, int xTo, int yTo)处理棋子移动的方法的数据。

对于用户可能指定的某些动作(例如,xFrom、yFrom 处的片段应该转到 xTo、yTo)我想为他们提供两个选项之间的选择。你可以想象,一个选择是正常去那里,另一个是作为一个变形块去那里。为此,我想显示一个自定义对话框,显示两个选项供用户单击。

我的自定义对话框类如下:

public class CustomDialog extends Dialog implements View.OnClickListener{

Context mcontext;
Button button1;
Button button2;
int choice;    //holds value of user's choice


public CustomDialog(Context context) {
    super(context);
    mcontext = context;
    button1 = (Button) findViewById(R.id.button1);
    button2 = (Button) findViewById(R.id.button2);
    choice = 0; //no choice yet 
}

public void setLayout(){

    this.setContentView(R.layout.custom_dialog);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);
}

@Override
public void onClick(View v) {

    switch(v.getId()){
    case R.id.button1:
         choice = 1;
         break;
    case R.id.button2:
         choice = 2;
         break;
    }   
    dismiss();
}
}

我不清楚的是如何将有关用户选择的信息传递回类 Game。

任何帮助是极大的赞赏。

4

2 回答 2

1

通过对话框的构造函数保存对父 Activity 的引用:

private final MyActivity mCaller;

public CustomDialog(MyActivity caller) {
    super(caller);
    mCaller = caller;

    //.......
}

通过调用其方法将值传递给调用活动:

@Override
public void onClick(View v) {

    switch(v.getId()){
    case R.id.button1:
         mCaller.setChoice(1);
         break;
    case R.id.button2:
         mCaller.setChoice(2);
         break;
    }   
    dismiss();
}
于 2013-04-27T04:41:43.703 回答
0

创建一个用于存储按钮动作的 bean 类 .... 单击事件时将其存储在 bean 中 在游戏类中,您可以从 bean 类访问按钮的动作值

于 2013-04-27T04:45:30.743 回答