2013-05-11 137 views
0

嘿,我正在嘗試做一個對話框。但整個對話沒有顯示出來,只有最底層的3個圖像按鈕正在顯示:這裏有什麼問題?而當我點擊對話框內的按鈕時,即使我做了一個開關盒,也沒有任何反應。ImageButton +對話框問題

customtype_dialog.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".AutoMode" 
    android:background="@color/black" >  

<RelativeLayout 
    android:id="@+id/dialog_relativeLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="3dp"  
    android:layout_above="@+id/dialog_relativeLayout2" 
    android:layout_centerHorizontal="true" > 

    <Button 
     android:id="@+id/dialog_btn1" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_margin="3dp" 
     android:background="@drawable/track_run" 
     android:layout_alignRight="@+id/dialog_relativeLayout1" 
     android:layout_alignTop="@+id/dialog_relativeLayout1" 
     /> 

    <Button 
     android:id="@+id/dialog_btn2" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_margin="3dp" 
     android:background="@drawable/track_bike" 
     android:layout_alignTop="@+id/dialog_relativeLayout1" 
     android:layout_toRightOf="@+id/dialog_btn1" 
     /> 

    <Button 
     android:id="@+id/dialog_btn3" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_margin="3dp" 
     android:layout_toRightOf="@+id/dialog_btn2" 
     android:background="@drawable/track_walk" 
     /> 
</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/dialog_relativeLayout2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="3dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    > 

    <Button 
     android:id="@+id/dialog_btn4" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_margin="3dp" 
     android:background="@drawable/track_ski" 
     android:layout_alignRight="@+id/dialog_relativeLayout2" 
     android:layout_alignTop="@+id/dialog_relativeLayout2" 
     /> 

    <Button 
     android:id="@+id/dialog_btn5" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_margin="3dp" 
     android:background="@drawable/track_boat" 
     android:layout_alignTop="@+id/dialog_relativeLayout2" 
     android:layout_toRightOf="@+id/dialog_btn4" 
     /> 

    <Button 
     android:id="@+id/dialog_btn6" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_margin="3dp" 
     android:background="@drawable/track_snow_boarding" 
     android:layout_alignTop="@+id/dialog_relativeLayout2" 
     android:layout_toRightOf="@+id/dialog_btn5" 
     /> 
    </RelativeLayout> 
</RelativeLayout> 




routeType = (ImageButton)findViewById(R.id.saveRoute_activityType); 
     routeType.setOnClickListener(typeListener); 

SaveRouteActivity.java

這是我的聽衆。

View.OnClickListener typeListener = new OnClickListener() { 
       public void onClick(View v) { 

        switch(v.getId()){ 
        case R.id.saveRoute_activityType: 
         Dialog typedialog = new Dialog(SaveRouteActivity.this); 
         typedialog.setContentView(R.layout.customtype_dialog); 
         typedialog.setTitle("Select type"); 
         typedialog.setCancelable(true); 
         typedialog.show(); 
         break; 

        case R.id.dialog_btn1: 
         txtType.setText("Run"); 
         routeType.setBackgroundResource(R.drawable.track_run); 
         break; 

        case R.id.dialog_btn2: 
         txtType.setText("Bike"); 
         routeType.setBackgroundResource(R.drawable.track_bike); 
         break; 

        case R.id.dialog_btn3: 
         txtType.setText("Walk"); 
         routeType.setBackgroundResource(R.drawable.track_walk); 
         break; 

        case R.id.dialog_btn4: 
         txtType.setText("Ski"); 
         routeType.setBackgroundResource(R.drawable.track_ski); 
         break; 

        case R.id.dialog_btn5: 
         txtType.setText("Boat"); 
         routeType.setBackgroundResource(R.drawable.track_boat); 
         break; 

        case R.id.dialog_btn6: 
         txtType.setText("Snowboarding"); 
         routeType.setBackgroundResource(R.drawable.track_snow_boarding); 
         break; 
        } 

       } 
      }; 
+0

如何顯示對話框?另外,你是否調用'setOnClickListener()'?您可能需要考慮爲每個按鈕使用不同的「OnClickListener」。這將消除對switch語句的需要。 – 2013-05-11 21:17:36

+0

我做了一個新的對話框,你可以在第一個例子中看到... – 2013-05-11 21:30:10

+0

我的猜測是'setContentView()'被忽略,因爲對話框還沒有被充值。通常你應該在'onCreate()'方法中調用這個方法。 – 2013-05-11 21:33:32

回答

0

我的猜測是typedialog.setContentView(R.layout.customtype_dialog);被忽略,因爲該對話框還沒有被充值。要解決該問題,您應該創建Dialog的子類,並在其onCreate()方法中調用setContentView()

+0

如果你想看到它,我可以發佈整個java類嗎? – 2013-05-11 21:40:47

+0

@IlhamiDogan沒有。如果有的話,你可能想從頭開始一個新的Android項目,重新創建問題。這將允許您更專注於您的代碼。如果你這樣做,我會很高興看到你的簡單例子的代碼。 – 2013-05-11 21:43:37

+0

您至少可以看到我在onCreate方法中執行了setContentView ... – 2013-05-11 21:45:59