我的启动画面后我的程序不断崩溃。为啥?
Posted
技术标签:
【中文标题】我的启动画面后我的程序不断崩溃。为啥?【英文标题】:My program keeps crashing after my splash screen. Why?我的启动画面后我的程序不断崩溃。为什么? 【发布时间】:2015-03-02 01:40:04 【问题描述】:我正在开发一个安卓程序。它显示启动屏幕,但在进入主要活动之前崩溃。这些是错误:
03-01 22:48:10.473 2657-2657/com.example.user.checkbox E/androidRuntime? FATAL EXCEPTION: main
Process: com.example.user.checkbox, PID: 2657
java.lang.RuntimeException: Unable to start activity ComponentInfocom.example.user.checkbox/com.example.user.favoritebooks.Main: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2334)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$900(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
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:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.user.favoritebooks.Main.onCreate(Main.java:36)
at android.app.Activity.performCreate(Activity.java:5451)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$900(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
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:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
这是附近的异常。最后一行是异常发生的地方。我不明白,我声明了适配器。:
public static final String favorites = "MyUserChoice" ;
ArrayList<String> items = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState)
getFav = (Button)findViewById(R.id.getchoice);
savetoshared = getSharedPreferences(favorites, Context.MODE_PRIVATE);
BookList = (ListView)findViewById(R.id.list);
clearbutton = (Button)findViewById(R.id.clearall);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, getResources().getStringArray(R.array.Favorite_Books));
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
BookList.setAdapter(adapter); //error
BookList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
if(savetoshared.contains(favorites))
LoadSelections();
【问题讨论】:
您是否在开发者设置中启用了 USB 调试? 检查这个:***.com/questions/26079838/… 调试已启用。我一直在运行包括这个在内的程序。 检查你的主要活动第36行有一个空指针异常来,先纠正它。 你只是在做setContentView()
。所以你不可能初始化BookList
..因此崩溃。
【参考方案1】:
您需要移动此代码
getFav = (Button)findViewById(R.id.getchoice);
savetoshared = getSharedPreferences(favorites, Context.MODE_PRIVATE);
BookList = (ListView)findViewById(R.id.list);
clearbutton = (Button)findViewById(R.id.clearall);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, getResources().getStringArray(R.array.Favorite_Books));
之后
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
因为您在super.onCreate(savedInstanceState);
方法调用之前初始化了您的视图。
【讨论】:
基本上你不能在setContentView
之前使用findViewsById
,也不能在super.onCreate
之前使用getString
、getResources
、setContentView
或几乎任何东西。以上是关于我的启动画面后我的程序不断崩溃。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在我滚动显示来自 plist 的数据的 tableview 后我的应用程序崩溃?
我的应用程序不断崩溃,大概是因为空对象引用错误,但我不知道为啥