2013-06-25 2 views
0

Вот мой OnpreferenceListener. Я использую настраиваемый макет внутри диалогового окна Alert Dialog и пытаюсь найти щелчок внутри пользовательского макета. Получение исключения Null указателя в методе OnClickListener. Может ли кто-нибудь указать, что здесь происходит не так?Проблема с OnClickListener внутри Custom Alert Dialog

sendus_feedback.setOnPreferenceClickListener(new OnPreferenceClickListener() { 
    @Override 
    public boolean onPreferenceClick(Preference preference) { 
     ContextThemeWrapper wrapper = new ContextThemeWrapper(SettingsActivity.this, 
                   android.R.style.Theme_Holo_Light); 
     @SuppressWarnings("unused") 
     final LayoutInflater inflater = (LayoutInflater) wrapper 
      .getSystemService(LAYOUT_INFLATER_SERVICE); 

     AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(wrapper); 
     LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View feedbackView = layoutInflater.inflate(R.layout.rate_now_layout, null); 

     myAlertDialog.setView(feedbackView); 

     ImageView ratenow = (ImageView) feedbackView 
      .findViewById(R.drawable.rate_now); 
     ratenow.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Log.v("clicked ratenow", "yes"); 
       Uri uri = Uri.parse("market://details?id=" 
            + getApplicationContext() 
            .getPackageName()); 
       Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); 
       try { 
        startActivity(goToMarket); 
       } catch (ActivityNotFoundException e) { 
        Toast.makeText(getApplicationContext(), 
            "Couldn't launch the market", 
            Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
     myAlertDialog.setPositiveButton("No, thanks.", 
             new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface arg0, 
                   int arg1) { 
              } 
             }); 
     myAlertDialog.setNegativeButton("Ask me later", 
             new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface arg0, 
                   int arg1) { 
              } 
             }); 
     myAlertDialog.show(); 
     return false; 
    } 
}); 
+0

где именно делать и получить нулевой указатель? – Carnal

+0

Строка "ratenow.setOnClickListener (новый OnClickListener() {" – intrepidkarthi

+0

, затем попробуйте ответить Карналу .. –

ответ

1
ImageView ratenow = (ImageView) feedbackView.findViewById(R.drawable.rate_now); 

должен быть

ImageView ratenow = (ImageView) feedbackView.findViewById(R.id.rate_now); 

Предполагая, что вы объявили android:id="@+id/rate_now" в макете XML как ImageView

+1

К сожалению, моя глупая ошибка. – intrepidkarthi

0

попробовать Carnal's ответ для вашей ошибки

, а также в конце до return false

изменение

myAlertDialog.show(); 

в

myAlertDialog.create().show();