Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

E/AndroidRuntime﹕ FATAL EXCEPTION: main [closed]

while I test my app, I get the follow error in the 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)

Here is the piece of 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();
        }
    }

The app also works with the error, but it is not nice to have an error in one app. I already googled a lot but my java skills are not enough very far and this is my first self-created app

like image 444
DominikTV Avatar asked Mar 18 '23 16:03

DominikTV


1 Answers

Caused by: java.lang.NullPointerException
    at android.app.Activity.findViewById(Activity.java:1884)
    at net.dominik.genpush.settings.<init>(settings.java:23)

You're calling findViewById() too early when initializing an activity settings object, likely a member variable. The code you posted doesn't show that.

You can call activity functions really only in onCreate() or later.

Also put the findViewById() after setContentView() so it can actually return something other than null.

like image 99
laalto Avatar answered Apr 01 '23 14:04

laalto