2011-11-14 51 views
0

我有一個顯示幾個按鈕的自定義對話框。這個想法是有一個可滾動的對話框,其中可以選擇一個數字或字母從0到9,或0到F或0到Z ...對話框中按鈕的問題

所以我的第一個問題是如何通過代碼添加這些按鈕和不是xml,因爲每次都有可變數量的按鈕。即使最簡單的代碼也會崩潰,所以我可能沒有做任何事情。

此外,我用幾個XML按鈕崩潰時,我點擊按鈕,說它找不到onClick函數的代碼。正如你所看到的,我在我的按鈕xml中使用了android:onClick =「onClickDialogbutton」,並且該函數確實存在於我的java代碼中,但它仍然崩潰。

希望有人可以看看代碼,並幫助我以編程方式添加按鈕,並讓onClick工作。

這裏是我的代碼:

DialogTestActivity.java:

package com.test.dialog; 
import android.app.Activity; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.widget.Button; 
import android.widget.LinearLayout; 
public class DialogTestActivity extends Activity { 
    Dialog dialog; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
    public void onClickStartDialog(View view) { 
     dialog = new Dialog(this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.dialog); 
     dialog.setCancelable(true); 
     dialog.show(); 
     // I here wish to add buttons through code and not xml. 
     // This gives an error as it is now. 
     Button button = new Button(this); 
     ((LinearLayout)findViewById(R.id.Buttons)).addView(button); 
    } 
    public void onClickDialogButton(View view) { 
     dialog.dismiss(); 
    } 
} 

的main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:onClick="onClickStartDialog" 
     android:text="Start Dialog" /> 
</LinearLayout> 

Dialog.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="54dip" 
    android:layout_height="150dip" 
    android:gravity="center" > 
    <ScrollView 
     android:layout_width="48dip" 
     android:layout_height="144dip" > 
     <LinearLayout 
      android:id="@+id/Buttons" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 
      <Button 
       android:id="@+id/ButtonId0" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="onClickDialogbutton" 
       android:text="0" 
       android:textSize="32dip" /> 
      <Button 
       android:id="@+id/ButtonId1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="onClickDialogbutton" 
       android:text="1" 
       android:textSize="32dip" /> 
      <Button 
       android:id="@+id/ButtonId2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:onClick="onClickDialogbutton" 
       android:text="2" 
       android:textSize="32dip" /> 
      </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 
+0

再次嘗試使用請發佈崩潰發生時從logcat獲得的異常堆棧跟蹤 – Craigy

回答

1

你可能需要請致電在dialog上的3210。只需在您的Activity內撥打findViewById,就會嘗試使用指定的ID查找活動中當前顯示的視圖或子視圖。在這種情況下,可能返回null,因此崩潰。使用dialog.findViewById...