我正在开发一个Android应用程序,我在其中使用一个活动作为自定义对话框。我将自定义对话框活动命名为Dialog_activity
,我的游戏活动命名为Activity1
。在Dialog_activity
中,有两个按钮,即是和否。该对话框询问用户他/她是否想要开始新游戏。那么,如何在“是”按钮的Activity1
方法中调用Dialog_activity
中OnClick
的方法。这是一个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
}
});
谢谢!
答案 0 :(得分:3)
以下是几个选项:
您可以将重置按钮()设置为静态,但为此您还必须使按钮保持静止。不建议使用此方法。
使用此How to create a Custom Dialog box in android?创建自定义对话框并仅在Activity1中为此自定义对话框充气。您可以将CustomDialogClass作为内部类,因此它将能够访问所有Activity1方法。
希望它有所帮助。
答案 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()
2)注册GameActivity以使用registerReceiver()
侦听自定义意图操作,并使用sendBroadCast()
答案 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 activity1Dialog_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();
}
});