E / AndroidRuntime:致命错误:主要

在测试我的应用程序时,我在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)

这是一段代码:

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();

}

}

该应用程序也可以处理该错误,但是在一个应用程序中出现错误并不是很好。我已经用谷歌搜索了很多,但是我的Java技能还远远不够,这是我第一个自行创建的应用

回答:

Caused by: java.lang.NullPointerException

at android.app.Activity.findViewById(Activity.java:1884)

at net.dominik.genpush.settings.(settings.java:23)

findViewById()初始化活动settings对象(可能是成员变量)时,您调用得太早了。您发布的代码未显示该代码。

您只能在onCreate()以后才调用活动功能。

还要放在findViewById()之后,setContentView()以便它实际上可以返回非null的值。

以上是 E / AndroidRuntime:致命错误:主要 的全部内容, 来源链接: utcz.com/qa/427625.html

回到顶部