0

Alert Dialog'u Number Picker ile açmaya çalıştığımda garip bir sorun yaşıyorum. ButtonClickListener yerleştirilir sınıftırUyarı İletişim Kutusunda Boş İşaretçi İstisnası yalnızca Android 6.0'da gösteriliyor

private class ButtonClickListener implements View.OnClickListener { 

     @Override 
     public void onClick(View v) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(ImagesActivity.this); 
      AlertDialog dialog; 
      final NumberPicker np = new NumberPicker(ImagesActivity.this); 
      np.setMinValue(1); 
      np.setMaxValue(dataModel.getPagesNumber()); 
      np.setValue(currentPage); 
      builder.setView(np); 
      builder.setTitle(R.string.jump_title); 
      builder.setPositiveButton(R.string.jump_ok, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        pager.setCurrentItem(np.getValue() - 1); 
        dialog.dismiss(); 
       } 
      }); 
      builder.setNegativeButton(R.string.jump_cancel, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.dismiss(); 
       } 
      }); 

      dialog = builder.create(); 
      dialog.show(); 
     } 
    } 

ImagesActivity,: bu işe bir buttonlistener ile set tuşuna sonra bu çağrılmalıdır. Bu, NumberPicker kullanılarak seçilen sayfaya kaydırılması gereken ViewPager gösterir.

Benim eski telefonlarda çalışıyor ama Android 6 başlatmak için denediğimde o mesaj hatası olsun:

java.lang.NullPointerException: Sanal yöntemi çağırmak girişimi 'android com.android.internal.app.AlertController.setupView (AlertController.java:489) nesnesindeki nesnesinin referansı ile ilgili .view.View.View.findViewById (int) 'yı com.android.internal.app adresinden nesne başvurusu .AlertController.installContent (AlertController.java:234) android.app.AlertDialog.onCreate (Al ertDialog.java:423) android.app.Dialog.dispatchOnCreate'da (Dialog.java:394) , android.app.Dialog.show'da (Dialog.java:295) , android.app.DialogFragment.onStart (DialogFragment. java: 490) android.app.Fragment.performStart (Fragment.java:2244) 'de android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1002)' de android.app.FragmentManagerImpl.moveToState (FragmentManager.java: 'da) 1148) android.app.FragmentManagerImpl $ 1.run de android.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1535) de android.app.BackStackRecord.run (BackStackRecord.java:793) de (FragmentManager.java:482) Android.os.Handler.handleCallback adresinden (Handler.java:739)Android.os.Handler.dispatchMessage (Handler.java:95) adresinde bulunan, android.os.Looper.loop (Looper.java:148) 'de (android.app.ActivityThread.main adresinde) java.lang.reflect.Method.invoke (Yerel Yöntem) com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main (ZygoteInit .java: 616)

Bunun neden olabileceğini biliyor musunuz? Ve bunu nasıl düzeltebilirim?

+0

SetupView() kodum yok, Android Kitaplığı tarafından sağlandığını düşünüyorum. – michalsol

cevap

2

bu kullanmayı deneyebilirsiniz.

Ben Muhtemelen standart/destek sürümlerini kullanma konusunda yeterince dikkatli değilken soruna neden Hatmi sürümü beri değişim, bir tür vardı

import android.support.v7.app.alertdialog; 

için

import android.app.alertdialog; 

değiştirmek zorunda kütüphanelerin

0

NumberPicker'ı bir LinearLayout veya RelativeLayout içine ekleyip diyalog görünümünü bu LinearLayout veya RelativeLayout öğesine ayarlamayı deneyin.

Düzenleme: Bir düzen xml içinde senin NumberPicker var ve onu şişirmek ve bu sorunu gidermek için yönetilen setview yöntemi çağrısı

+0

Neyse ki yardımcı olmadı. Hala hata mesajını alıyorum. – michalsol

+0

Builder.setView (np) hakkında yorum yaparsanız; hala hatanın var mı? – mmcoder10

+0

Lütfen sorununuzu çözüp çözmediğini görmek için düzenlememi kontrol edin. – mmcoder10

2

Bu, alertDialogStyle'ı karıştırdığınız anlamına gelir - oradan layout res kimliğini okur ve doğru düzeni yüklemezse, NPE olacaktır.