Android崩溃在onCreate
问题描述:
每当我运行我的应用程序,第一次从Eclipse运行它运行良好。但是,如果我关闭了应用程序并重新打开它,它会在onCreate上崩溃。这里是logcat的:Android崩溃在onCreate
10-10 02:50:00.665: E/AndroidRuntime(29564): FATAL EXCEPTION: main
10-10 02:50:00.665: E/AndroidRuntime(29564): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appuccino.unitconverter/com.appuccino.unitconverter.MainActivity}: java.lang.NullPointerException
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.ActivityThread.access$600(ActivityThread.java:140)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.os.Looper.loop(Looper.java:137)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.ActivityThread.main(ActivityThread.java:4898)
10-10 02:50:00.665: E/AndroidRuntime(29564): at java.lang.reflect.Method.invokeNative(Native Method)
10-10 02:50:00.665: E/AndroidRuntime(29564): at java.lang.reflect.Method.invoke(Method.java:511)
10-10 02:50:00.665: E/AndroidRuntime(29564): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
10-10 02:50:00.665: E/AndroidRuntime(29564): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
10-10 02:50:00.665: E/AndroidRuntime(29564): at dalvik.system.NativeStart.main(Native Method)
10-10 02:50:00.665: E/AndroidRuntime(29564): Caused by: java.lang.NullPointerException
10-10 02:50:00.665: E/AndroidRuntime(29564): at com.appuccino.unitconverter.MainActivity.onCreate(MainActivity.java:37)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.Activity.performCreate(Activity.java:5206)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
10-10 02:50:00.665: E/AndroidRuntime(29564): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
10-10 02:50:00.665: E/AndroidRuntime(29564): ... 11 more
而且我mainActivity的第一部分:
public class MainActivity extends FragmentActivity implements
OnItemSelectedListener {
/**
* The serialization (saved instance state) Bundle key representing the
* current dropdown position.
*/
private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";
private Spinner firstSpinner;
private Spinner secondSpinner;
final String[] mainCategoryChoices = {"Acceleration", "Angles", "Area", "Astronomical", "Clothing", "Computers and Electronics", "Cooking", "Date/Time", "Density", "Energy"};
final String[] subCategoryChoices = {"Acre", "Barn", "Bunder", "Hundred", "Jerib", "Kappland", "Labor", "Ping", "Rai", "Shed", "Sitio", "Square", "Square Mile", "Square Yard"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR); //not necessary
setContentView(R.layout.activity_main);
ArrayAdapter<String> firstAdapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_dropdown_item_1line,
mainCategoryChoices);
ArrayAdapter<String> secondAdapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_dropdown_item_1line,
subCategoryChoices);
final ActionBar actionBar = getActionBar();
if(actionBar != null)
{
actionBar.setCustomView(R.layout.action_bar_custom);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
}
firstSpinner = (Spinner) findViewById(R.id.firstSpinner);
secondSpinner = (Spinner) findViewById(R.id.secondSpinner);
firstSpinner.setAdapter(firstAdapter);
secondSpinner.setAdapter(secondAdapter);
firstSpinner.setOnItemSelectedListener(this);
secondSpinner.setOnItemSelectedListener(this);
}
37号线将日志信息指向呈上行说
final String[] subCategoryChoices = {"Acre", "Barn", "Bunder", "Hundred", "Jerib", "Kappland", "Labor", "Ping", "Rai", "Shed", "Sitio", "Square", "Square Mile", "Square Yard"};
尽管当我点击它进入onCreate()之上的行,是什么让它崩溃?
答
我敢打赌,在NPE
在这个line.-
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
据getWindow()文档,机会是,该方法仍然会返回null
内onCreate
。如果注释状态不需要该行,请尝试删除它。
此外,您应该仔细检查您的activity_main
布局是否包含视图firstSpinner
和secondSpinner
。
什么是第37行? – codeMagic
LogCat IS指向特定的行。它说异常正在第37行抛出。 –
Logcat指向'at at com.appuccino.unitconverter.MainActivity.onCreate(MainActivity.java:37)'。那里有一个NPE。告诉我们这条线是什么,我们可以提供更准确的帮助。 –