Android中调用startActivity结果导致:上网查了一下,总结如下:
第一种情况:java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPointerException
错误代码:
private int defaultDrawable=R.drawable.radio; private String defaultTitle=getString(R.string.defaulTitle);//这是第48行,也就是NullPointerException的地方 private String defaultInfo=getString(R.string.defaulInfo); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.vlist2); findViews(); setListeners(); } private void findViews() { tvTitle=(TextView)findViewById(R.id.mainTitleText); imgpre=(ImageView)findViewById(R.id.imgpre); }
错误分析:
android布局分析时,是加载
layout后再加载 R.string 的,而我提前用R.string来初始化变量,所以出错
解决方案:
setContentView(R.layout.vlist2); 之后再初始化defaultTitle,defaultInfo。
修改后的代码:
private int defaultDrawable=R.drawable.radio; private String defaultTitle; private String defaultInfo; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.vlist2); findViews(); setListeners(); } private void findViews() { tvTitle=(TextView)findViewById(R.id.mainTitleText); imgpre=(ImageView)findViewById(R.id.imgpre); defaultTitle=getString(R.string.defaulTitle); defaultInfo=getString(R.string.defaulInfo); }
第二种情况:
错误信息如下:
ERROR/AndroidRuntime(327): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.lee.android/org.lee.android.radioPlayer}: java.lang.ClassCastException: android.widget.ImageView
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);//以debug模式运行时,运行到此处,程序崩溃。 }
结论:
main.xml文件出错。好好检查下吧,不要太相信xml编辑器,有些错误,编辑器不会报错的。
我的错误如下:
定位错误代码:
<span style="color:#FF0000;">//请注意,ImageView开始标签 <ImageView android:layout_height="20dip" android:layout_width="wrap_content" android:id="@+id/ibadd" android:src="@drawable/freadd" android:layout_alignParentRight="true" ></span> <TextView android:layout_height="20dip" android:layout_width="wrap_content" android:layout_gravity="center" android:id="@+id/tvfre" > </TextView> </ImageView> //请注意,ImageView结束标签修改后的代码:
<ImageView android:layout_height="20dip" android:layout_width="wrap_content" android:id="@+id/ibadd" android:src="@drawable/freadd" ndroid:layout_alignParentRight="true" > lt;/ImageView> <TextView android:layout_height="20dip" android:layout_width="wrap_content" android:layout_gravity="center" android:id="@+id/tvfre" > </TextView>