从自定义对话框活动中的活动调用方法

时间:2013-11-20 05:25:19

标签: android dialog android-activity

我正在开发一个Android应用程序,我在其中使用一个活动作为自定义对话框。我将自定义对话框活动命名为Dialog_activity,我的游戏活动命名为Activity1。在Dialog_activity中,有两个按钮,即是和否。该对话框询问用户他/她是否想要开始新游戏。那么,如何在“是”按钮的Activity1方法中调用Dialog_activityOnClick的方法。这是一个tic tac toe应用程序。 这是代码:

活性1

public class Dialog_activity extends Activity {
Button yesbutton,nobutton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
Button btn1 = (Button) findViewById(R.id.button1);
Button btn2 = (Button) findViewById(R.id.button2);
Button btn3 = (Button) findViewById(R.id.button3);
Button btn4 = (Button) findViewById(R.id.button4);
Button btn5 = (Button) findViewById(R.id.button5);
Button btn6 = (Button) findViewById(R.id.button6);
Button btn7 = (Button) findViewById(R.id.button7);
Button btn8 = (Button) findViewById(R.id.button8);
Button btn9 = (Button) findViewById(R.id.button9);
}

public void resetButtons()
{
btn1.setText("");
btn2.setText("");
btn3.setText("");
btn4.setText("");
btn5.setText("");
btn6.setText("");
btn7.setText("");
btn8.setText("");
btn9.setText("");
}
}

对话活动

public class Dialog_activity extends Activity {
Button yesbutton,nobutton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    setContentView(R.layout.dialog_activity);
    Intent startdialog = getIntent();
    yesbutton = (Button) findViewById(R.id.button);
    nobutton = (Button) findViewById(R.id.button2);
    nobutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
    yesbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
            //call the resetButtons() method
        }
    });

谢谢!

4 个答案:

答案 0 :(得分:3)

以下是几个选项:

  1. 您可以将重置按钮()设置为静态,但为此您还必须使按钮保持静止。不建议使用此方法。

  2. 使用此How to create a Custom Dialog box in android?创建自定义对话框并仅在Activity1中为此自定义对话框充气。您可以将CustomDialogClass作为内部类,因此它将能够访问所有Activity1方法。

  3. 希望它有所帮助。

答案 1 :(得分:2)

使用实例调用您想要的方法在Activity1中创建Dialog_activity实例。

Class Activity1 extends Activity
{

   Dialog_activity dialog_activity;

    btn.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                dialog_activity.the_method_you_want;

            }
        });
}

答案 2 :(得分:0)

我可以提出两种方式,

1)通过使用startActivityForResult()并在GameActivity中覆盖onActivityResult()

,从Game活动中获取结果的Dialog活动

2)注册GameActivity以使用registerReceiver()侦听自定义意图操作,并使用sendBroadCast()

在DialogActivity中广播该操作

答案 3 :(得分:0)

<强> 1。导入活动_1 2.在类下面写类变量Dialog_activity activity1 3.使用此activity1引用activity1.resetButtons()调用reset方法;在yesbutton onclocklistener里面

<强> 1。 import activity_1

public class Dialog_activity extends Activity {
Button yesbutton,nobutton;

<强> 2。在类

下面写类变量Dialog_activity activity1
Dialog_activity activity1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    setContentView(R.layout.dialog_activity);
    Intent startdialog = getIntent();
    yesbutton = (Button) findViewById(R.id.button);
    nobutton = (Button) findViewById(R.id.button2);
    nobutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
    yesbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {`enter code here`
            finish();
            **//call the resetButtons() method using reference activity1 
            activity1.resetButtons();
        }
    });