从非Activity类中调用的自定义对话框中检索信息

时间:2013-04-27 04:32:51

标签: android dialog

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

在类中,游戏是关于片段在哪里的数据以及处理片段移动的方法Move(int xFrom, int yFrom, int xTo, int yTo)

对于用户可以指定的某些动作(例如,xFrom,yFrom应该转到xTo,yTo)我希望为它们提供两个选项之间的选择。你可以想象,一种选择是正常去那里,而另一种选择是去那里作为一个转变的作品。为此,我想显示一个自定义对话框,显示用户可以选择的两个选项。

我的自定义Dialog类如下:

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();
}
}

我不清楚的是如何将有关用户选择的信息传递回课程游戏。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

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

访问按钮的操作值