2012-05-30 63 views
0

顯示任何內容,我試圖讓同一actvity內tabed接口。 這是我的main.xmlNullPointerException異常而在標籤

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TabWidget android:id="@android:id/tabs" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    /> 
    <FrameLayout android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <AnalogClock android:id="@+id/tab1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     /> 
     <Button android:id="@+id/tab2" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:text="A semi-random button" 
     /> 
    </FrameLayout> 
    </LinearLayout> 
</TabHost> 

dummy.xml:

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

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

     <RatingBar 
      android:id="@+id/ratingBar1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

和我的活動:

public class LActivity extends Activity { 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    TabHost tabs=(TabHost)findViewById(R.id.tabhost); 
    tabs.setup(); 

    tabs.addTab(tabs.newTabSpec("tag1").setIndicator("1").setContent(R.id.tab1)); 
    tabs.addTab(tabs.newTabSpec("tag2").setIndicator("2").setContent(R.id.tab2)); 

上面的代碼工作,但如果你改變R.id.tab2R.layout.dummyR.id.ratingBar1它會拋出一個nullpointerexception。

我打算在一個選項卡以顯示dummy.xml。

回答

6

之所以R.id.tab2作品和R.layout.dummy不是R.id.tab2是因爲它是在設置爲它與setContentView佈局所限定的內容Activity視圖的一部分。

您不能使用佈局ID其中視圖-ID的預期,而這就是爲什麼R.layout.dummy不起作用。你不能指望它使用R.id.ratingBar1當作爲不是Activity內容的一部分工作,以及如何將活動知道從哪裏得到這個觀點?請記住,您可以使用ID爲ratingBar1的多種不同佈局。

你需要做的是將你的虛擬佈局在@android:id/tabcontent內。你可以用一個<include>元素來做到這一點。否則,你需要自己膨脹的佈局和使用得到View作爲參數setContent

+0

@ arnab321:正如我在答覆中提到,保持獨立的佈局和使用''元素在'tabcontent'讓你的其他佈局文件引用。這樣,您的主佈局不會混亂,您可以在每個單獨的佈局中編輯每個標籤頁。 –

相關問題