当我测试我的应用时,我在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();
}
}
该应用程序也适用于错误,但在一个应用程序中出错是不好的。 我已经google了很多,但我的java技能还不够,这是我的第一个自创应用
答案 0 :(得分:3)
Caused by: java.lang.NullPointerException
at android.app.Activity.findViewById(Activity.java:1884)
at net.dominik.genpush.settings.<init>(settings.java:23)
在初始化活动findViewById()
对象(可能是成员变量)时,您过早地调用settings
。您发布的代码并未显示。
您只能在onCreate()
或更晚版本中调用活动功能。
同时将findViewById()
放在setContentView()
之后,这样它实际上可以返回除null之外的其他内容。
答案 1 :(得分:0)
NullPointerException
第23行 settings.java
。
您可以在logcat的Cause by
中找到问题代码。显然,你的问题在于
at net.dominik.genpush.settings.<init>(settings.java:23)