0

Bonjour everyone

I 'd like to display a Dialog with customized layout when clicking on an element of Gallery view. My gallery is displayed without any problem but when selecting an element an error occured.

My code :

gallery.setAdapter(new ImageAdapter(this));
...

gallery.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View v,  int position, long id) {


        final Dialog dialog = new Dialog(mContext);
        dialog.setContentView(R.layout.show_capture);

        dialog.setTitle("my title");

        ImageView image = (ImageView) dialog.findViewById(R.id.image);
        image.setImageResource(R.drawable.ic_launcher);

        Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
        dialogButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog.show();

        }
});

My Log file :

03-16 03:43:10.387: E/AndroidRuntime(5226): FATAL EXCEPTION: main
03-16 03:43:10.387: E/AndroidRuntime(5226): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewRoot.setView(ViewRoot.java:531)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.app.Dialog.show(Dialog.java:241)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at com.xxx.activities.ActivityDetailsActivity$1.onItemClick(ActivityDetailsActivity.java:247)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.widget.AdapterView.performItemClick(AdapterView.java:284)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.widget.Gallery.onSingleTapUp(Gallery.java:867)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.GestureDetector.onTouchEvent(GestureDetector.java:557)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.widget.Gallery.onTouchEvent(Gallery.java:842)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.View.dispatchTouchEvent(View.java:3885)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1691)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1125)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1675)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2194)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1878)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.os.Looper.loop(Looper.java:123)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at java.lang.reflect.Method.invokeNative(Native Method)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at java.lang.reflect.Method.invoke(Method.java:507)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-16 03:43:10.387: E/AndroidRuntime(5226):  at dalvik.system.NativeStart.main(Native Method)

Is someone knows how to resolve it....

Thank you for reading.

johann
  • 1,115
  • 8
  • 34
  • 60

1 Answers1

1

Change this:

final Dialog dialog = new Dialog(mContext);

to this:

final Dialog dialog = new Dialog(ActivityDetailsActivity.this);
Siddharth Lele
  • 27,623
  • 15
  • 98
  • 151