2013-05-12 78 views
0

所以我创建了一个自定义对话框,我将它设置为一个xml文件。在那个文件中我有2个按钮。其中之一是响应它的onClick对应的另一个不是。我不知道为什么它不是。我已经正确设置了它的ID,并且完成了与其他按钮完全相同的操作......它不会给我任何错误,它只是没有做任何事情。 我甚至将按钮属性“clickable”设置为true ...我不知道该怎么做。Button没有响应OnClickListener()

此外,似乎如果我尝试添加另一个按钮,它也没有响应,当单击...是否有一些对话框可以采取的小部件的限制?哈哈...

它不工作的SaveAndFinish按钮

Dialog createFlashCards = new Dialog(FlashCard.this); 
           createFlashCards.setContentView(R.layout.flash_card_create); 
           final EditText Question = (EditText)createFlashCards.findViewById(R.id.FlashCard_CreateQuestionEditText); 
           final EditText Answer = (EditText)createFlashCards.findViewById(R.id.FlashCard_CreateAnswerEditText); 
           Button SaveFlashCard = (Button)createFlashCards.findViewById(R.id.create_new_saved_FlashCard); 
           Button FinishAndSave = (Button)createFlashCards.findViewById(R.id.finish_creating_flashCards); 

           //saves the flashCard to the file on their phone 
           SaveFlashCard.setOnClickListener(new OnClickListener() { 
            @Override 
            public void onClick(View arg0) { 
             //have to check for empty questions or answers 
             if (!Question.getText().toString().equals("") && !Answer.getText().toString().equals("")) { 
               String newLineQuestionFixer = Question.getText().toString(); 
               String newLineAnswerFixer = Answer.getText().toString(); 
               newLineQuestionFixer = newLineQuestionFixer.replaceAll("\n", "<GAR>"); 
               newLineAnswerFixer = newLineAnswerFixer.replaceAll("\n", "<GAR>"); 
               Statics.addDataIntoFlashCardFile(FlashCard.this, input.getText().toString(), newLineQuestionFixer, 
                 newLineAnswerFixer, Statics.mainPageListPosition); 
              Toast.makeText(FlashCard.this, "FlashCard successfully created", Toast.LENGTH_SHORT).show(); 

             } 
             else { 
              Toast.makeText(FlashCard.this, "Must have a question and an answer to save a flashCard", Toast.LENGTH_SHORT).show(); 
             } 
             Question.setText(""); 
             Answer.setText(""); 
            } 
           }); 

           FinishAndSave.setOnClickListener(new OnClickListener() { 
            @Override 
            public void onClick(View arg0) { 
             //have to check for empty questions or answers 
             if (!Question.getText().toString().equals("") && !Answer.getText().toString().equals("")) { 
               String newLineQuestionFixer = Question.getText().toString(); 
               String newLineAnswerFixer = Answer.getText().toString(); 
               newLineQuestionFixer = newLineQuestionFixer.replaceAll("\n", "<GAR>"); 
               newLineAnswerFixer = newLineAnswerFixer.replaceAll("\n", "<GAR>"); 
               Statics.addDataIntoFlashCardFile(FlashCard.this, input.getText().toString(), newLineQuestionFixer, 
                 newLineAnswerFixer, Statics.mainPageListPosition); 
              Toast.makeText(FlashCard.this, "FlashCard successfully created", Toast.LENGTH_SHORT).show(); 
             //just an intent to refresh the class 
             Intent refresh = new Intent(FlashCard.this, FlashCard.class); 
             refresh.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
             startActivity(refresh); 
             overridePendingTransition(0,0); 
             } 
             else { 
              Toast.makeText(FlashCard.this, "Must have a question and an answer to save a flashCard", Toast.LENGTH_SHORT).show(); 
             } 
            } 
           }); 
           createFlashCards.show(); 

这里是按钮的XML

<Button 
     android:id="@+id/finish_creating_flashCards" 
     android:layout_width="wrap_content" 
     android:layout_height="55dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/btn_round_xml" 
     android:textColor="#FFFFFF" 
     android:clickable="true" 
     android:text="Finish and Save" /> 

    <Button 
     android:id="@+id/create_new_saved_FlashCard" 
     android:layout_width="wrap_content" 
     android:layout_height="55dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/btn_round_xml" 
     android:clickable="true" 
     android:text="Save_FlashCard" 
     android:textColor="#FFFFFF" /> 
+0

您是否使用了调试工具来查看您是否至少输入了onClick()函数? – 2013-05-12 01:17:04

+0

我有,而我不是......那是令我感到困惑的。 – cj1098 2013-05-12 01:19:22

回答

1

你可以尝试赶上点击这样的事件的声明:

<Button 
    android:id="@+id/finish_creating_flashCards" 
    android:layout_width="wrap_content" 
    android:layout_height="55dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/btn_round_xml" 
    android:textColor="#FFFFFF" 
    android:clickable="true" 
    android:text="Finish and Save" 
    android:onClick="finishCreatingFlashCards" /> 

在你的.java代码文件:

public void finishCreatingFlashCards(View v) { 
     // your code on button click. 
} 
+0

问题在于你基本上只是进行一个函数调用,而且我需要从这个alertDialog中的某些变量,除非它们在对话框中,否则我不能得到它。 – cj1098 2013-05-12 01:15:55

+0

那你为什么不使用正面和负面的按钮? – JustWork 2013-05-12 01:20:59

+0

我只是想出了它..这是因为我有2种方式访问​​此菜单,我从一个访问它我忘了它没有上述onClickListener()..它是一个1000行文件,所以它花了我一会儿才找到它。< 谢谢你的帮助! 也谢谢你,我了解到你可以调用xml很酷的功能! – cj1098 2013-05-12 01:23:09