2012-06-20 108 views
0

我有這樣的代碼:java的空指針錯誤

public class InfoActions extends ActivityGroup{ 

TabHost tabHost; 
TabSpec first; 
TabSpec second; 


View indicatorview1; 
View indicatorview2; 


@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    // ToDo add your GUI initialization code here 
    setContentView(R.layout.infoactions); 

    tabHost=(TabHost)findViewById(R.id.tabhostsynchronisation); 
    tabHost.setup(getLocalActivityManager()); 
    tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 

    indicatorview1 = android.view.LayoutInflater.from(this).inflate(R.layout.tabs_bg_styled, null); 


    first=tabHost.newTabSpec("Tab 1"); 
    ((TextView)indicatorview1.findViewById(R.id.tabsText)).setText(""); 
    first.setIndicator(indicatorview1); 
    Intent in1 = new Intent(this, com.Orange.PrepareVisits.RoadmapsOnDevice.class); 
    first.setContent(in1); 

    indicatorview2 = android.view.LayoutInflater.from(this).inflate(R.layout.tabs_bg_styled, null); 

    second=tabHost.newTabSpec("Tab 2"); 
    ((TextView)indicatorview2.findViewById(R.id.tabsText)).setText("Informations"); 
    second.setIndicator(indicatorview2); 
    Intent in2 = new Intent(this, com.Orange.Information.Informations.class); 
    second.setContent(in2); 

    tabHost.addTab(first); 
    tabHost.addTab(second); 

}

這是我tabs_bg_styled.xml

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/tab_bg_selector" 
    android:padding="10dp" 
    android:gravity="center" 
    android:orientation="vertical" 
> 
    <TextView 
     android:id="@+id/tabsText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Title" 
     android:textSize="10dp" 
     android:textStyle="bold" 
     android:textColor="@drawable/tab_text_selector" 
     android:gravity="center" 
    /> 
</LinearLayout> 

這是日誌:

ERROR AndroidRuntime  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
ERROR AndroidRuntime  at android.os.Handler.dispatchMessage(Handler.java:99) 
ERROR AndroidRuntime  at android.os.Looper.loop(Looper.java:130) 
ERROR AndroidRuntime  at android.app.ActivityThread.main(ActivityThread.java:3701) 
ERROR AndroidRuntime  at java.lang.reflect.Method.invokeNative(Native Method) 
ERROR AndroidRuntime  at java.lang.reflect.Method.invoke(Method.java:507) 
ERROR AndroidRuntime  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
ERROR AndroidRuntime  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 
ERROR AndroidRuntime  at dalvik.system.NativeStart.main(Native Method) 
ERROR AndroidRuntime Caused by: java.lang.NullPointerException 
ERROR AndroidRuntime  at com.Orange.Information.InfoActions.onCreate(InfoActions.java:45) 
ERROR AndroidRuntime  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
ERROR AndroidRuntime  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 

這是我所在的路線et error:

((TextView)indicatorview1.findViewById(R.id.tabsText)).setText(""); 

任何人的任何想法?

+2

你有嘗試as'TextView txtview =((TextView的)indicatorview1.findViewById(R.id.tabsText )); txtview.setText(「」);'? –

+0

不,我沒有試過。問題是我一直都沒有得到這個錯誤。有時它沒有作任何更改 – adrian

+0

我們喜歡這種方式..... LayoutInflater mInflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mInflater .inflate(R.layout.tabs_bg_styled,null); –

回答

4

也許儘量不要在同一行(至少直到它的作品)的所有工作。這將是更容易調試,並嘗試使用這樣的充氣機(我怎麼總是用它):

LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View vi = inflater.inflate(R.layout.tabs_bg_styled, null); 
TextView tv = (TextView)vi.findViewById(R.id.tabsText);