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
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.
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)