"Unable to retrieve correct enclosing instance of this" error in Android?
<p>In the below given function i am trying to <strong>create an alertDialog box with username and password field</strong> and <strong>Insert the values of the fields into the shared preferences</strong>.But the <strong>app crashes after i press the ok button in alert dialog box after entering the fields</strong></p>

<p>I am not able to access the variables inside the alertDialog box positive button click listener inside the protected Dialog onCreateDialog(int id).When I inspect the variables 
prefs,username and password it shows me this.
<strong>Unable to retrieve correct enclosing instance of this.</strong> Can someone tell me what is the reason for this</p>

<pre><code>       import android.app.Activity;
        import android.app.AlertDialog;
        import android.app.Dialog;
        import android.content.Context;
        import android.content.DialogInterface;
        import android.content.DialogInterface.OnClickListener;
        import android.content.SharedPreferences;
        import android.os.Bundle;
        import android.preference.PreferenceManager;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.widget.EditText;

        public class Login extends Activity {

            public static String PREF_LOGIN_USERNAME = "pref_username";
            public static String PREF_LOGIN_PASSWORD = "pref_password";

            public static final int DIALOG_LOGIN = 100;
            public static final int DIALOG_NEW_PASSWORD = 101;


            LayoutInflater factory;
            View loginView;

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                showDialog(DIALOG_LOGIN);

            }

            protected Dialog onCreateDialog(int id) {
                switch (id) {

                case DIALOG_LOGIN:
                    // Inflating the View from the xml
                    factory = LayoutInflater.from(Login.this);
                    loginView = factory.inflate(R.layout.alert_dialog_text_entry, null);
                    return new AlertDialog.Builder(this)
                            .setTitle(R.string.alert_dialog_login)
                            .setView(loginView)
                            .setPositiveButton(R.string.dialog_ok,
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog,
                                                int whichButton) {
                       Context context = getApplicationContext();
                            SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(context);
                                    SharedPreferences.Editor editor = prefs.edit();

                                    EditText username = (EditText)loginView.findViewById(R.id.username_edit);
                                    EditText password = (EditText)loginView.findViewById(R.id.password_edit);
                                    editor.putString(PREF_LOGIN_USERNAME,
                                            username.getText().toString());
                                    editor.putString(PREF_LOGIN_PASSWORD,
                                            password.getText().toString());
                                    editor.commit();
                                    editor.commit();


                                        }
                                    })
                            .setNegativeButton(R.string.dialog_cancel,
                                    new OnClickListener() {

                                        @Override
                                        public void onClick(DialogInterface dialog,
                                                int which) {
                                            // TODO Auto-generated method stub
                                            showDialog(DIALOG_LOGIN);
                                        }
                                    }).create();
    }
    return null;
        }
    }
</code></pre>

<p>xml file</p>

<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
--&gt;

&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"&gt;

    &lt;TextView 
        android:id="@+id/username_view"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:text="@string/alert_dialog_username"
        android:gravity="left"
        android:textAppearance="?android:attr/textAppearanceMedium" /&gt;

    &lt;EditText
        android:id="@+id/username_edit"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:scrollHorizontally="true"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium" /&gt;

    &lt;TextView
        android:id="@+id/password_view"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:text="@string/alert_dialog_password"
        android:gravity="left"
        android:textAppearance="?android:attr/textAppearanceMedium" /&gt;

    &lt;EditText
        android:id="@+id/password_edit"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:scrollHorizontally="true"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:password="true"
        android:textAppearance="?android:attr/textAppearanceMedium" /&gt;

&lt;/LinearLayout&gt;
</code></pre>

<p>The Error log from ddms:</p>

<pre><code>04-14 21:43:32.870: ERROR/AndroidRuntime(16125): java.lang.NullPointerException
04-14 21:43:32.870: 
ERROR/AndroidRuntime(16125):     at com.qrcoder.Login$1.onClick(Login.java:66)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at android.os.Looper.loop(Looper.java:123)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at java.lang.reflect.Method.invokeNative(Native Method)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at java.lang.reflect.Method.invoke(Method.java:521)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
04-14 21:43:32.870: ERROR/AndroidRuntime(16125):     at dalvik.system.NativeStart.main(Native Method)
</code></pre>

<p><strong>Edit</strong>:This is the working code.</p>
