2013-03-29 86 views
0

您好,我對這個「選項卡活動」的概念是新的。我搜索了這個,最後我知道我應該實現「片段」。我做了下面的代碼,但它顯示錯誤。請指導我解決這個問題。在Android中的選項卡活動

public class VendorActivity extends FragmentActivity 
{ 
    private FragmentTabHost mTabHost; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_vendor); 

     mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); 


     // Tab for Photos 

     TabSpec photospec = mTabHost.newTabSpec("Photos"); 
     // setting Title and Icon for the Tab 
     photospec.setIndicator("Photos"); 
     Intent photosIntent = new Intent(this, Simple.class); 
     photospec.setContent(photosIntent); 


     System.out.println("b4 fragment"); 
     TabSpec songspec = mTabHost.newTabSpec("Songs"); 
     songspec.setIndicator("Songs"); 
     Intent songsIntent = new Intent(this, Contacts.class); 
     songspec.setContent(songsIntent); 
     System.out.println("bafter fragment"); 

     System.out.println("1"); 
     mTabHost.addTab(photospec); // Error comes here.android 
     System.out.println("2"); 
     mTabHost.addTab(songspec); 
     System.out.println("3"); 

//  mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"), 
//     FragmentStackSupport.sim.class, null); 





    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_vendor, menu); 
     return true; 
    } 

} 

我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.app.FragmentTabHost 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="match_parent" 
    android:layout_height="match_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"/> 
    </LinearLayout> 
    </android.support.v4.app.FragmentTabHost> 

我的logcat:

03-29 23:44:09.245: I/Process(447): Sending signal. PID: 447 SIG: 9 
03-29 23:46:17.304: I/System.out(474): b4 fragment 
03-29 23:46:17.304: I/System.out(474): bafter fragment 
03-29 23:46:17.304: I/System.out(474): 1 
03-29 23:46:17.444: D/AndroidRuntime(474): Shutting down VM 
03-29 23:46:17.444: W/dalvikvm(474): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
03-29 23:46:17.584: E/AndroidRuntime(474): FATAL EXCEPTION: main 
03-29 23:46:17.584: E/AndroidRuntime(474): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vegetable/com.vegetable.VendorActivity}: java.lang.NullPointerException 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.os.Looper.loop(Looper.java:123) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-29 23:46:17.584: E/AndroidRuntime(474): at java.lang.reflect.Method.invokeNative(Native Method) 
03-29 23:46:17.584: E/AndroidRuntime(474): at java.lang.reflect.Method.invoke(Method.java:521) 
03-29 23:46:17.584: E/AndroidRuntime(474): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-29 23:46:17.584: E/AndroidRuntime(474): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-29 23:46:17.584: E/AndroidRuntime(474): at dalvik.system.NativeStart.main(Native Method) 
03-29 23:46:17.584: E/AndroidRuntime(474): Caused by: java.lang.NullPointerException 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.widget.TabHost.addTab(TabHost.java:209) 
03-29 23:46:17.584: E/AndroidRuntime(474): at com.vegetable.VendorActivity.onCreate(VendorActivity.java:50) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-29 23:46:17.584: E/AndroidRuntime(474): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
03-29 23:46:17.584: E/AndroidRuntime(474): ... 11 more 
+0

嘗試首先了解片段http://developer.android.com/guide/components/fragments.html – Pragnani

+1

請指出您的'VendorActivity'的第50行,因爲我們無法知道。 – CommonsWare

+0

謝謝@Pragnani當然我會通過教程..可以說我做錯了什麼.. – Subburaj

回答

0

mTabHostnull

顯然,這是因爲res/layout/activity_vendor.xml不包含FragmentTabHost名爲@android:id/tabhost,這是您的findViewById()調用請求的內容。

+0

謝謝..我已經編輯我的文章與我的XML> >。有了這個,你可以幫助我.. – Subburaj

+0

@Subburaj:你可以嘗試清理你的項目(在Eclipse中,Project> Clean;在命令行中,ant clean),看看是否有幫助。否則,XML,Java代碼和堆棧跟蹤之間的某些內容不同步。 – CommonsWare

+0

試過,但沒有用.. – Subburaj

相關問題