Android error: The application has stopped unexpectedly please try again

3

I made an app which is just working fine. It displays the number of times app has been started. Here's the code:

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.TextView;

public class PreferencesDemo extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Get the app's shared preferences
        SharedPreferences app_preferences = 
            PreferenceManager.getDefaultSharedPreferences(this);

        // Get the value for the run counter
        int counter = app_preferences.getInt("counter", 0);

        // Update the TextView
        TextView text = (TextView) findViewById(R.id.text);
        text.setText("This app has been started " + counter + " times.");

        // Increment the counter
        SharedPreferences.Editor editor = app_preferences.edit();
        editor.putInt("counter", ++counter);
        editor.commit(); // Very important
    }
}

If I change the int variable to string it throws an error saying: "app has stopped unexpectedly.. please try again later". Here's the code that throws error:

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.TextView;

public class pref extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        String c = prefs.getString("c", "hello");
        TextView t = (TextView)findViewById(R.id.te);
        t.append(c);

        SharedPreferences.Editor edit = prefs.edit();
        edit.putString("c", "There");
        edit.commit();
    }

}

can anyone tell me where m I going wrong? Provided: I have correctly mentioned the textview in main.xml file.

Here are the LogCat details:

07-11 15:49:12.908: DEBUG/AndroidRuntime(521): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
07-11 15:49:12.918: DEBUG/AndroidRuntime(521): CheckJNI is ON
07-11 15:49:15.459: DEBUG/AndroidRuntime(521): --- registering native functions ---
07-11 15:49:19.049: DEBUG/AndroidRuntime(521): Shutting down VM
07-11 15:49:19.049: DEBUG/dalvikvm(521): Debugger has detached; object registry had 1 entries
07-11 15:49:19.079: INFO/AndroidRuntime(521): NOTE: attach of thread 'Binder Thread #4' failed
07-11 15:49:20.349: DEBUG/AndroidRuntime(530): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
07-11 15:49:20.359: DEBUG/AndroidRuntime(530): CheckJNI is ON
07-11 15:49:20.739: DEBUG/AndroidRuntime(530): --- registering native functions ---
07-11 15:49:22.492: INFO/ActivityManager(68): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.webkul.pref/.pref }
07-11 15:49:26.996: WARN/ActivityManager(68): Activity pause timeout for HistoryRecord{43f1d590 com.android.launcher/com.android.launcher2.Launcher}
07-11 15:49:27.484: DEBUG/AndroidRuntime(530): Shutting down VM
07-11 15:49:27.619: DEBUG/dalvikvm(530): Debugger has detached; object registry had 1 entries
07-11 15:49:28.649: INFO/ActivityManager(68): Start proc com.webkul.pref for activity com.webkul.pref/.pref: pid=537 uid=10038 gids={}
07-11 15:49:31.339: DEBUG/AndroidRuntime(537): Shutting down VM
07-11 15:49:31.339: WARN/dalvikvm(537): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
07-11 15:49:31.438: ERROR/AndroidRuntime(537): FATAL EXCEPTION: main
07-11 15:49:31.438: ERROR/AndroidRuntime(537): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.webkul.pref/com.webkul.pref.pref}: java.lang.ClassCastException: java.lang.Integer
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.os.Looper.loop(Looper.java:123)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.ActivityThread.main(ActivityThread.java:4627)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at java.lang.reflect.Method.invoke(Method.java:521)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at dalvik.system.NativeStart.main(Native Method)
07-11 15:49:31.438: ERROR/AndroidRuntime(537): Caused by: java.lang.ClassCastException: java.lang.Integer
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.ContextImpl$SharedPreferencesImpl.getString(ContextImpl.java:2699)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at com.webkul.pref.pref.onCreate(pref.java:17)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-11 15:49:31.438: ERROR/AndroidRuntime(537):     ... 11 more
07-11 15:49:31.646: WARN/ActivityManager(68):   Force finishing activity com.webkul.pref/.pref
07-11 15:49:34.053: DEBUG/dalvikvm(68): GC_FOR_MALLOC freed 13421 objects / 615120 bytes in 1300ms
07-11 15:49:34.129: WARN/ActivityManager(68): Activity pause timeout for HistoryRecord{43fd3ee8 com.webkul.pref/.pref}
07-11 15:49:34.739: WARN/ActivityManager(68): Launch timeout has expired, giving up wake lock!
07-11 15:49:37.479: INFO/Process(537): Sending signal. PID: 537 SIG: 9
07-11 15:49:37.559: WARN/InputManagerService(68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43ebfa20
07-11 15:49:37.779: INFO/ActivityManager(68): Process com.webkul.pref (pid 537) has died.
07-11 15:49:37.889: DEBUG/SntpClient(68): request time failed: java.net.SocketException: Address family not supported by protocol
07-11 15:49:46.680: WARN/ActivityManager(68): Activity destroy timeout for HistoryRecord{43fd3ee8 com.webkul.pref/.pref}
java
android
asked on Stack Overflow Jul 11, 2010 by Vaibhav • edited Jul 11, 2010 by Vaibhav

3 Answers

8

You need to learn how to Debug in Eclipse and how to use the ADB and DDMS tools.

In order to get more details about an exception/force close you need to look for a view in Eclipse called Logcat(you will find in the DDMS perspective) there you will find a detailed traceback when/what and on what line is the issue.

For this you should read a complete article about Debugging in Android using Eclipse

alt text
(source: droidnova.com)

EDIT

It says clear what's the problem Caused by: java.lang.ClassCastException: java.lang.Integer on getString

answered on Stack Overflow Jul 11, 2010 by Pentium10 • edited Aug 1, 2019 by Glorfindel
1

From the doc of getString() from SharedPreferences

Returns the preference value if it exists, or defValue. Throws ClassCastException if there is a preference with this name that is not a String.

So my guess is that you have "c" key with a value different than a String. Maybe you have added it by mistake with putInt().

Try retrieving the "c" key with getInt() to see if you still have the exception.

answered on Stack Overflow Jul 11, 2010 by ccheneson
0

okk got that now.. added a Context and refrenced it through it..

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
//import android.preference.PreferenceManager;
import android.widget.TextView;

public class pref extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Context mContext = this.getApplicationContext();
        SharedPreferences prefs = mContext.getSharedPreferences("pref", 0);
        String c = prefs.getString("c", "hello");
        TextView t = (TextView)findViewById(R.id.te);
        t.append(c);

        SharedPreferences.Editor edit = prefs.edit();
        edit.putString("c", "There");
        edit.commit();
    }
}
answered on Stack Overflow Jul 11, 2010 by Vaibhav

User contributions licensed under CC BY-SA 3.0