Android中调用startActivity结果导致:java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}

Android中调用startActivity结果导致:上网查了一下,总结如下:

第一种情况:java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPointerException

错误代码:

[java] 
view plain
 copy
 print
?

  1. private int defaultDrawable=R.drawable.radio;  
  2.   
  3. private String defaultTitle=getString(R.string.defaulTitle);//这是第48行,也就是NullPointerException的地方  
  4.   
  5. private String defaultInfo=getString(R.string.defaulInfo);  
  6.   
  7. @Override  
  8.   
  9. public void onCreate(Bundle savedInstanceState) {  
  10.   
  11. super.onCreate(savedInstanceState);  
  12.   
  13.          setContentView(R.layout.vlist2);                                                                            
  14.   
  15.  findViews();  
  16.   
  17.  setListeners();  
  18.   
  19. }  
  20.   
  21. private void findViews()  
  22.   
  23. {  
  24.   
  25. tvTitle=(TextView)findViewById(R.id.mainTitleText);  
  26.   
  27. imgpre=(ImageView)findViewById(R.id.imgpre);  
  28.   
  29. }  

错误分析:

 Android布局分析时,是加载

layout后再加载  R.string 的,而我提前用R.string来初始化变量,所以出错


解决方案:

 setContentView(R.layout.vlist2);        之后再初始化defaultTitle,defaultInfo。

修改后的代码:

[java] 
view plain
 copy
 print
?

  1. private int defaultDrawable=R.drawable.radio;    
  2.     private String defaultTitle;    
  3.         
  4. private String defaultInfo;    
  5.     
  6.     @Override    
  7.     public void onCreate(Bundle savedInstanceState) {    
  8.         super.onCreate(savedInstanceState);    
  9.              
  10.          setContentView(R.layout.vlist2);                                                                              
  11.            
  12.           findViews();    
  13.           setListeners();    
  14.     }    
  15.     private void findViews()    
  16.     {    
  17.         tvTitle=(TextView)findViewById(R.id.mainTitleText);    
  18.         imgpre=(ImageView)findViewById(R.id.imgpre);    
  19. defaultTitle=getString(R.string.defaulTitle);    
  20.             
  21. defaultInfo=getString(R.string.defaulInfo);    
  22.     }    

第二种情况:

错误信息如下:

ERROR/AndroidRuntime(327): Java.lang.RuntimeException: Unable to start activity ComponentInfo{org.lee.android/org.lee.android.radioPlayer}: java.lang.ClassCastException: android.widget.ImageView

[java] 
view plain
 copy
 print
?

  1. public void onCreate(Bundle savedInstanceState) {    
  2. super.onCreate(savedInstanceState);    
  3. setContentView(R.layout.main);//以debug模式运行时,运行到此处,程序崩溃。    
  4. }   

结论:
main.xml文件出错。好好检查下吧,不要太相信xml编辑器,有些错误,编辑器不会报错的。
我的错误如下:
定位错误代码:


[java] 
view plain
 copy
 print
?

  1. <span style=“color:#FF0000;”>//请注意,ImageView开始标签  
  2.     <ImageView  
  3.   android:layout_height=“20dip”   
  4.     android:layout_width=“wrap_content”  
  5.   android:id=“@+id/ibadd”  
  6.   android:src=“@drawable/freadd”  
  7. android:layout_alignParentRight=“true”  
  8.   ></span>  
  9.  <TextView  
  10.    android:layout_height=“20dip”   
  11.     android:layout_width=“wrap_content”  
  12.     android:layout_gravity=“center”  
  13.     android:id=“@+id/tvfre”  
  14.   >    
  15.   </TextView>  
  16.     
  17.   </ImageView> //请注意,ImageView结束标签  

修改后的代码:

[java] 
view plain
 copy
 print
?

  1.  <ImageView    
  2.  android:layout_height=“20dip”     
  3.    android:layout_width=“wrap_content”    
  4.  android:id=“@+id/ibadd”    
  5.  android:src=“@drawable/freadd”    
  6. ndroid:layout_alignParentRight=“true”    
  7.  >    
  8. lt;/ImageView>    
  9. <TextView    
  10.   android:layout_height=“20dip”     
  11.    android:layout_width=“wrap_content”    
  12.    android:layout_gravity=“center”    
  13.    android:id=“@+id/tvfre”    
  14.  >      
  15.  </TextView>    

转载:http://blog.csdn.net/chaoyu168/article/details/50378584

点赞