web-dev-qa-db-fra.com

E/AndroidRuntime EX EXCEPTION FATALE: principale

pendant que je teste mon application, l'erreur de suivi s'affiche dans Android-Studio-Consol:

08-21 13:56:28.059    9637-9637/net.dominik.genpush E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: net.dominik.genpush, PID: 9637
Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{net.dominik.genpush/net.dominik.genpush.settings}: Java.lang.NullPointerException
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2110)
        at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2233)
        at Android.app.ActivityThread.access$800(ActivityThread.Java:135)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1196)
        at Android.os.Handler.dispatchMessage(Handler.Java:102)
        at Android.os.Looper.loop(Looper.Java:136)
        at Android.app.ActivityThread.main(ActivityThread.Java:5001)
        at Java.lang.reflect.Method.invokeNative(Native Method)
        at Java.lang.reflect.Method.invoke(Method.Java:515)
        at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:785)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:601)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: Java.lang.NullPointerException
        at Android.app.Activity.findViewById(Activity.Java:1884)
        at net.dominik.genpush.settings.<init>(settings.Java:23)
        at Java.lang.Class.newInstanceImpl(Native Method)
        at Java.lang.Class.newInstance(Class.Java:1208)
        at Android.app.Instrumentation.newActivity(Instrumentation.Java:1061)
        at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2101)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2233)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:135)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1196)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:136)
            at Android.app.ActivityThread.main(ActivityThread.Java:5001)
            at Java.lang.reflect.Method.invokeNative(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:515)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:785)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:601)
            at dalvik.system.NativeStart.main(Native Method)

Voici le morceau de code:

public CheckBox checkBox_Push;
    public TextView textView_appby;
    public Button button_feedback;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        checkBox_Push = (CheckBox) findViewById(R.id.checkBox_Push);

        textView_appby = (TextView) findViewById(R.id.textView_appby);

        button_feedback = (Button) findViewById(R.id.button_feedback);
    }

    public void onTextClickAppBy(View x)
    {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.addCategory(Intent.CATEGORY_BROWSABLE);
        intent.setData(Uri.parse("http://www.dominiktv.net"));
        startActivity(intent);
    }

    //Button Status Speichern
    @Override
    public void onPause() {
        super.onPause();
        save(checkBox_Push.isChecked());
    }

    @Override
    public void onResume() {
        super.onResume();
        checkBox_Push.setChecked(load());
    }

    private void save(final boolean isChecked) {
        SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putBoolean("check", isChecked);
        editor.commit();

    }

    private boolean load() {
        SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
        return sharedPreferences.getBoolean("check", true);
    }
    public void onCheckboxPush(View b)
    {
        if (checkBox_Push.isChecked())
        {
            //PB
            Pushbots.getInstance().setNotifyStatus(true);
            //PB E
            Toast.makeText(getApplicationContext(), "Push-Benachrichtigungen aktiviert",
                    Toast.LENGTH_SHORT).show();
        }
        else
        {
            //PB
            Pushbots.getInstance().setNotifyStatus(false);
            //PB E
            Toast.makeText(getApplicationContext(), "Push-Benachrichtigungen deaktiviert",
                    Toast.LENGTH_SHORT).show();
        }
    }

L'application fonctionne également avec l'erreur, mais il n'est pas agréable d'avoir une erreur dans une application. J'ai déjà beaucoup cherché sur Google mais mes compétences en Java ne sont pas assez poussées et c'est ma première application que j'ai créée

3
DominikTV
Caused by: Java.lang.NullPointerException
    at Android.app.Activity.findViewById(Activity.Java:1884)
    at net.dominik.genpush.settings.<init>(settings.Java:23)

Vous appelez findViewById() trop tôt lors de l'initialisation d'un objet d'activité settings, probablement une variable membre. Le code que vous avez posté ne montre pas cela.

Vous ne pouvez appeler les fonctions d’activité que dans onCreate() ou plus tard.

Mettez également le findViewById() après le setContentView() afin qu'il puisse réellement renvoyer autre chose que null.

3
laalto

NullPointerException dans votre settings.Java, ligne 23.

Vous pouvez localiser votre code de problème dans Cause by de votre logcat. Clairement, votre problème réside

at net.dominik.genpush.settings.<init>(settings.Java:23)
0
Wesley