AlertDialog中的Onclick不起作用

时间:2013-09-05 15:59:42

标签: java android xml android-intent

我正在尝试创建一个数独板,当你按下其中一个空按钮时,它会显示出来 你是一个带有10个按钮的警告对话框,其中包含数字1-9结束空数字; 当我按下对话框中的一个按钮时没有任何反应。

游戏代码:

AlertDialog.Builder alert=new AlertDialog.Builder(this);
alert.setView(View.inflate(this, R.layout.activity_dialog, null));
alert.show();
Intent e=getIntent();
int s=e.getIntExtra("number", 0);

对话框代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        button1=(Button)findViewById(R.id.btn1);
        button1.setOnClickListener(this);
        button2=(Button)findViewById(R.id.btn2);
        button2.setOnClickListener(this);
        button3=(Button)findViewById(R.id.btn3);
        button3.setOnClickListener(this);
        button4=(Button)findViewById(R.id.btn4);
        button4.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.dialog, menu);
        return true;
}

@Override
public void onClick(View v) {
        // TODO Auto-generated method stub
        Button b=(Button)v;
        if(b==button1)
        {
                button1.setText("hay");
                Intent i=new Intent(this,EasyGame.class);
                i.putExtra("number", 1);
                startActivity(i);
        }
        else
        {
                if(b==button2)
                {
                        Intent i=new Intent(this,EasyGame.class);
                        i.putExtra("number", 2);
                        startActivity(i);
                }
                else
                {
                        if(b==button3)
                        {
                                Intent i=new Intent(this,EasyGame.class);
                                i.putExtra("number", 3);
                                startActivity(i);
                        }
                        else
                        {


                                if(b==button4){
                                        Intent i=new Intent(this,EasyGame.class);
                                        i.putExtra("number", 4);
                                        startActivity(i);
                                }

1 个答案:

答案 0 :(得分:0)

正如评论中所述,您应该尝试缩小问题范围并仅发布最相关的代码,如果我们认为有必要,我们会要求更多。另外,在帖子中发布使用工具栏格式化的代码,这样我们就不必来回翻转了。您还应该通过单击相应答案旁边的复选标记来接受答案,这有助于解决您的问题。您还应该确保一直阅读Help Section

话虽如此,我会尽力帮助你,因为你知道。在我看来,您通过对AlertDialog进行膨胀然后期望您的Buttons课程运行来显示layout Dialog AlertDialog。这不是它的工作原理。如果您想使用该课程而不是使用Intent,请创建startActivityForResult并使用setResult()启动该课程,并在Dialog中将结果发回{ {1}}课程。然后,您将使用Acvtivity在第一个onActivityRresult()中获得该结果。因此,当点击空按钮而不是Intent

时,请启动AlertDialog
Intent i = (FirstActivityName.this, Dialog.class);
startActivityForResult(i, 0);

Dialog课程中,点击按钮后,您创建一个带有空构造函数的Intent,然后发送回说明被点击的数字

if(b==button1)
            {
                    Intent i=new Intent();
                    i.putExtra("number", 1);
                    setResult(0);
                    finish();

然后在您的第一个Activity中,您将获得一个方法onActivityResult(),该方法将获得您发回的Intent数据。

请仔细阅读Activity Docs关于此的一个很好的例子。

我可能错了,因为有很多代码需要查看,但这就是发生在我身上的事情。

对话主题活动

此外,您可以通过在Activity

中的相应Dialog标记中添加以下行,为<activity>提供manifest的外观
android:theme="@android:style/Theme.Dialog"