2013-12-13 4 views
0

Я использовал следующий метод при нажатии кнопки, чтобы отобразить диалог со списком изображений. Диалог работает нормально, если я удалю setOnclickListener из изображений. Но приложение остановится, к сожалению, если я использовал setOnclickListener к изображениям.setOnClickListener изображения в диалоговом окне не работает

private void showFrame(){ 
      frameDialog = new Dialog(CameraActivity.this); 
      frameDialog.setContentView(R.layout.frame_selection); 
      frameDialog.setTitle("Select a frame"); 

      ImageView thumb1 = (ImageView) findViewById(R.id.thumbView1); 
      ImageView thumb2 = (ImageView) findViewById(R.id.thumbView2); 
      ImageView thumb3 = (ImageView) findViewById(R.id.thumbView3); 

      frameDialog.show(); 
      thumb1.setOnClickListener(
        new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
           Toast.makeText(getApplicationContext(), "to this is okay!", Toast.LENGTH_LONG).show(); 
           frameDialog.dismiss(); 

         } 
        } 
       ); 
thumb2.setOnClickListener(
        new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
           Toast.makeText(getApplicationContext(), "to this is okay!", Toast.LENGTH_LONG).show(); 
           frameDialog.dismiss(); 

         } 
        } 
       ); 
       thumb3.setOnClickListener(
        new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
           Toast.makeText(getApplicationContext(), "to this is okay!", Toast.LENGTH_LONG).show(); 
           frameDialog.dismiss(); 

         } 
        } 
       ); 


       } 

LogCat

12-13 11:22:07.110: E/AndroidRuntime(17913): FATAL EXCEPTION: main 
12-13 11:22:07.110: E/AndroidRuntime(17913): java.lang.NullPointerException 
12-13 11:22:07.110: E/AndroidRuntime(17913): at com.***.**.**.showFrame(CameraActivity.java:98) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at com.**.**.***.access$0(CameraActivity.java:87) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at com.**.**.**$3.onClick(CameraActivity.java:79) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at android.view.View.performClick(View.java:4261) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at android.view.View$PerformClick.run(View.java:17420) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at android.os.Handler.handleCallback(Handler.java:615) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at android.os.Looper.loop(Looper.java:137) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at android.app.ActivityThread.main(ActivityThread.java:4944) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at java.lang.reflect.Method.invokeNative(Native Method) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at java.lang.reflect.Method.invoke(Method.java:511) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
12-13 11:22:07.110: E/AndroidRuntime(17913): at dalvik.system.NativeStart.main(Native Method) 

** NB 98-линия не является: thumb1.setOnClickListener (........

ответ

6

Заменить

ImageView thumb1 = (ImageView) findViewById(R.id.thumbView1); 
ImageView thumb2 = (ImageView) findViewById(R.id.thumbView2); 
ImageView thumb3 = (ImageView) findViewById(R.id.thumbView3); 

с

ImageView thumb1 = (ImageView) frameDialog.findViewById(R.id.thumbView1); 
ImageView thumb2 = (ImageView) frameDialog.findViewById(R.id.thumbView2); 
ImageView thumb3 = (ImageView) frameDialog.findViewById(R.id.thumbView3); 
1

Изменить этот

ImageView thumb1 = (ImageView) findViewById(R.id.thumbView1); 
ImageView thumb2 = (ImageView) findViewById(R.id.thumbView2); 
ImageView thumb3 = (ImageView) findViewById(R.id.thumbView3); 

в

ImageView thumb1 = (ImageView)frameDialog.findViewById(R.id.thumbView1); 
ImageView thumb2 = (ImageView)frameDialog.findViewById(R.id.thumbView2); 
ImageView thumb3 = (ImageView)frameDialog.findViewById(R.id.thumbView3); 

findViewById выглядит для представления с идентификатором упомянутого в текущем надутом макете. Поэтому вам нужно использовать объект диалога для инициализации ваших представлений.

+1

Спасибо @Raghunandan за ваш быстрый ответ с объяснением .. :) – CrazyLearner

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