2012-08-28 68 views
7

我是一個自學成才的初學者,並體會到耐心!謝謝!OnClickListener裏面自定義alertdialog Android

在Eclipse中,我用自己的xml文件(「custom_dialog」)製作了一個自定義alertdialog,它被稱爲「usernamealert」。

如果用戶還沒有輸入用戶名(即username.length == 0),我想要彈出提醒。

在這個佈局裏面我有一個textView(「你叫什麼名字?」),editText和button(「usernameButton」)。

在按鈕的onclicklistener之前,一切工作。這是我的(有關)Java:

LayoutInflater inflater = getLayoutInflater(); 
View dialoglayout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)  getCurrentFocus()); 
AlertDialog.Builder usernamebuilder = new AlertDialog.Builder(this); 
usernamebuilder.setView(dialoglayout); 

AlertDialog usernamealert = usernamebuilder.create(); 

當我把onclicklistener,它打破了!我應該把它放在哪裏?

(以下是我試過......都在我的OnCreate)

LayoutInflater inflater = getLayoutInflater(); 
View dialoglayout = inflater.inflate(R.layout.custom_dialog, (ViewGroup)getCurrentFocus()); 
AlertDialog.Builder usernamebuilder = new AlertDialog.Builder(this); 
usernamebuilder.setView(dialoglayout); 


Button usernameButton = (Button) usernamealert.findViewById(R.id.usernameButton); 
usernameButton.setOnClickListener(new OnClickListener() { 

@Override 
public void onClick(View v) { 
//store username in sharedprefs 
usernamealert.dismiss(); 



} 
}); 

我的代碼後道:

if (username.length() == 0) { 
      usernamealert.show(); 
     } 

再次,它的工作之前,我開始與搞亂按鈕!

+0

AFTE r幾個小時的搜索,最後發佈這個問題,我只是在2分鐘後才發現它! 所有我應該做的不同是改變它如何找到按鈕: 按鈕usernameButton =(按鈕)usernamealert.findViewById(R.id.usernameButton); 它應該是: Button usernameButton =(Button)dialoglayout.findViewById(R.id.usernameButton); // dialoglayout是你所謂的視圖 – delfina

+0

歡迎來到StackOverflow!你可以請你的解決方案作爲答案,並接受它作爲正確的答案後,它可以讓你。如果他們遇到同樣的問題,這將使未來的人們更容易找到解決方案。 – FoamyGuy

+0

你的答案幫助了我..雖然請讓你的答案更具可讀性..即時將下面的答案添加到 – mcr619619

回答

2

試試這個。

usernamebuilder.setCancelable(false) 
usernamebuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      //do what you want. 
     } 
    }); 

看看是否有用,或者它是否有幫助。

+1

當我在ImageView上添加自定義onClickListener時,我該如何解除這個對話框? – 4ndro1d

+0

@ 4ndro1d使用「dialog.dismiss();」在setOnClickListener()中的onClick方法內部; – AJW

7

需要它來指定將代碼搜索按鈕,如果只有「findViewById」它會在主機的XML搜索,它應該是

LayoutInflater inflater =getLayoutInflater(); 
       View myview = inflater.inflate(R.layout.dialoghireteachernegotiate, null); 
       // Inflate and set the layout for the dialog 
       // Pass null as the parent view because its going in the dialog layout 
       builder.setView(myview); 
       Button addS = (Button) myview.findViewById (R.id.bAddS); 

這是我的課的一部分, Hireteachernegotiate.class,其中有hireteachernegotiate.xml的佈局

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       // Get the layout inflater 
       LayoutInflater inflater =getLayoutInflater(); 
       View myview = inflater.inflate(R.layout.dialoghireteachernegotiate, null); 
       // Inflate and set the layout for the dialog 
       // Pass null as the parent view because its going in the dialog layout 
       builder.setView(myview); 

       Button addS = (Button) myview.findViewById (R.id.bAddS); 
       addS.setOnClickListener(new View.OnClickListener() { 

        public void onClick(View v) { 
         //do some stuff 
        } 
       }); 

       Button minusS = (Button) myview.findViewById (R.id.bMinusS); 
       addS.setOnClickListener(new View.OnClickListener() { 

        public void onClick(View v) { 
         //do other stuff 
        } 
       }); 

       // Add action buttons 
         builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 


           dialog.cancel(); 
          } 
         }); 
        builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 



      builder.show(); 

這是對話框佈局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <Button 
     android:id="@+id/bAddS" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 


    <Button 
     android:id="@+id/bMinusS" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 

</LinearLayout> 
+0

對話框佈局名稱是「dialoghireteachernegotiate.xml」 – mcr619619