2013-05-11 140 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