2015-09-15 7 views
-1

Я создал пользовательский диалог. Когда пользователь нажимает на кнопку, отображается диалог. Android-версия lollipop отлично показывает мне диалог, но в случае более низкой версии, чем леденец, это вызывает ошибку.java.lang.NoSuchMethodError: android.app.Dialog.create

Вот мой код:

public class MainActivity extends AppCompatActivity { 

    private Button click; 
    private Dialog dialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     click=(Button)findViewById(R.id.click); 

     click.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(v.equals(click)) 
       { 
        dialog=new Dialog(MainActivity.this); 
        dialog.setContentView(R.layout.check_in_weight_dialog); 
        dialog.create(); 
        dialog.show(); 
       } 
      } 
     }); 
    } 

А вот мой диалог пользовательский макет:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:padding="16dp" 
    android:layout_height="wrap_content"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="10"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Check In Weight" 
      android:textColor="@android:color/black" 
      android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" 
      android:gravity="center"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_marginTop="20dp" 
     android:layout_weight="20"> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="40dp" 
      android:inputType="number" 
      android:hint="Current Weight" 
      android:background="@drawable/editext_border" 
      android:id="@+id/edtCheckInWhgt"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:gravity="center" 
     android:layout_marginTop="20dp" 
     android:layout_weight="10"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="OK" 
      android:gravity="center" 
      android:id="@+id/btncheckin" 
      android:textColor="@android:color/holo_blue_light" 
      android:background="?android:attr/selectableItemBackground"/> 

    </LinearLayout> 


</LinearLayout> 
+0

на какой версии Androyd проверить кроме lolipop? –

+0

Только на леденец это показывает. В остальной части версии он вызывает ошибку. –

+0

'Dialog.create()' был добавлен в API уровня 21. Вы не можете использовать этот метод с версией Android ниже, чем Android5.0 (lolipop) –

ответ

2
dialog.create(); 

Это только для lolipop. Удалить эту строку

0

Попробуйте этот путь, Он отлично работает (Lolipop)

custom_dialog = new Dialog(this,android.R.style.Theme_Holo_Light_Dialog_MinWidth); 
custom_dialog.getWindow().setBackgroundDrawable(new ColorDrawable((0xff000000))); 
custom_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
custom_dialog.setCancelable(false); 
custom_dialog.setContentView(R.layout.check_in_weight_dialog); 
custom_dialog.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, Color.parseColor("#FFFFFF")); 
custom_dialog.show(); 

или удалить dialog.create();

dialog=new Dialog(MainActivity.this); 
        dialog.setContentView(R.layout.check_in_weight_dialog); 
        dialog.show(); 
+1

Извините, что брок не работал. –

+0

remove dialog.create(); –

Смежные вопросы