Autore Topic: problema istanziamento java.lang.RuntimeException  (Letto 648 volte)

Offline hackmejava

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s5830i
  • Sistema operativo:
    ubuntu 13.04
problema istanziamento java.lang.RuntimeException
« il: 10 Ottobre 2013, 22:03:28 CEST »
0
ciao a tutti:) ho un problema che non riesco a risolvere:

ho creato una classe di nome SavePreferences per salvare e prelevare stringhe:

Codice (Java): [Seleziona]
package com.hackmejava.easymeteo;

import android.app.Activity;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class SavePreferences extends Activity{
       
        public static final String PREFERENCE_FILE = "EasyMeteo_file";
        public static SharedPreferences settings;
        public SharedPreferences.Editor editor;
       
        public void  setPreference(String nome,String valore){
                PreferenceManager.setDefaultValues(this, R.xml.settingslayout, false);
                settings = getSharedPreferences(PREFERENCE_FILE, 0);
                editor = settings.edit();
                editor.putString(nome, valore);
                editor.commit();
        }
       
       
        public String getPreference(String nome,String inDefault) {
                settings = getPreferences(MODE_PRIVATE);
                String unita = settings.getString(nome, inDefault);
                return unita;

        }
}

in un'altra classe la chiamo all'inizio cosi:
Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
               
                SavePreferences savePref = new SavePreferences();
                Log.d(null, savePref.getPreference("unita", "c"));
...................................................

se tolgo il "savePref.getPreference("unita","c") "
funziona tutto se lo metto mi da questo errore qui:

Codice: [Seleziona]
10-10 21:57:34.195: D/szipinf(31090): Initializing inflate state
10-10 21:57:35.273: D/AndroidRuntime(31090): Shutting down VM
10-10 21:57:35.281: W/dalvikvm(31090): threadid=1: thread exiting with uncaught exception (group=0x40018560)
10-10 21:57:35.328: E/AndroidRuntime(31090): FATAL EXCEPTION: main
10-10 21:57:35.328: E/AndroidRuntime(31090): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hackmejava.easymeteo/com.hackmejava.easymeteo.MeteoActivity_1}: java.lang.NullPointerException
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.ActivityThread.access$1500(ActivityThread.java:123)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.os.Looper.loop(Looper.java:130)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.ActivityThread.main(ActivityThread.java:3835)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at java.lang.reflect.Method.invokeNative(Native Method)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at java.lang.reflect.Method.invoke(Method.java:507)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at dalvik.system.NativeStart.main(Native Method)
10-10 21:57:35.328: E/AndroidRuntime(31090): Caused by: java.lang.NullPointerException
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.Activity.getLocalClassName(Activity.java:3488)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.Activity.getPreferences(Activity.java:3522)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at com.hackmejava.easymeteo.SavePreferences.getPreference(SavePreferences.java:23)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at com.hackmejava.easymeteo.MeteoActivity_1.onCreate(MeteoActivity_1.java:39)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-10 21:57:35.328: E/AndroidRuntime(31090):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
10-10 21:57:35.328: E/AndroidRuntime(31090):         ... 11 more

Offline Melanogaster

  • Utente normale
  • ***
  • Post: 260
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    SII
  • Sistema operativo:
    Kubuntu
Re:problema istanziamento java.lang.RuntimeException
« Risposta #1 il: 11 Ottobre 2013, 03:22:35 CEST »
0
Alla riga 23 di SavePreferences.java cosa si trova esattamente?
L'errore dovrebbe essere lì

Offline hackmejava

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s5830i
  • Sistema operativo:
    ubuntu 13.04
Re:problema istanziamento java.lang.RuntimeException
« Risposta #2 il: 11 Ottobre 2013, 09:30:24 CEST »
0
grazie di aver risposto intanto se non erro la riga incriminata è:

 
Codice (Java): [Seleziona]
 settings = getPreferences(MODE_PRIVATE);


nessuno???:(

Post unito: 11 Ottobre 2013, 19:28:17 CEST
ok ho capito e risolto il problema:

bisognava aggiungere il context al metodo sia get che set :
Codice (Java): [Seleziona]
        public String getPreference(String nome,String inDefault,Context c) {
grazie comunque:)
« Ultima modifica: 11 Ottobre 2013, 20:51:22 CEST da hackmejava, Reason: Merged DoublePost »