2011-04-14 24 views
0

TAB窗口小部件應用程序中的強制關閉錯誤 我正在使用教程http://developer.android.com/resources/tutorials/views/hello-tabwidget.html來創建TAB視圖。 我想在每個選項卡中顯示不同的列表。我在單獨的活動中創建了每個列表,並通過創建新的意圖實例來調用它,然後將其傳遞給setcontent(); 以下爲TabWidget.javaAndroid TabWidget應用程序中的ForceClose錯誤

package com.TabWidget; 

import android.app.TabActivity; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.widget.TabHost; 

public class TabWidget extends TabActivity { 

    static final String[] COUNTRIES = new String[] { 
     "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", 
     "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", 
     "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", 
     "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium" 
     }; 

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

     TabHost mTabHost = getTabHost(); 
     Resources res = getResources(); 

     Intent aIntent = new Intent(this, a.class); 
     Intent bIntent = new Intent(this, b.class); 
     Intent cIntent = new Intent(this, c.class); 

     mTabHost.addTab(mTabHost.newTabSpec("A").setIndicator("A", res.getDrawable(R.drawable.icon)).setContent(aIntent)); 
     mTabHost.addTab(mTabHost.newTabSpec("B").setIndicator("B", res.getDrawable(R.drawable.icon)).setContent(bIntent)); 
     mTabHost.addTab(mTabHost.newTabSpec("C").setIndicator("C", res.getDrawable(R.drawable.icon)).setContent(cIntent)); 

     mTabHost.setCurrentTab(1); 
    } 

} 

A.java

package com.TabWidget; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class A extends Activity { 

    static final String[] COUNTRIES = new String[] { 
     "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", 
     "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", 
     "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", 
     "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium" 
     }; 

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

     ListView list=(ListView)findViewById(R.id.countries); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, COUNTRIES); 
     list.setAdapter(adapter); 
     setContentView(R.layout.tab1); 
    } 

} 

主要的.xml

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android: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"> 
      <include layout="@layout/tab1"/>  
      <include layout="@layout/tab2"/> 
      <include layout="@layout/tab3"/> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

我是新手,Android的發展和興趣在UI開發的代碼。 在此先感謝。

+2

閱讀關於LogCat,那裏你可以找到強制關閉錯誤的原因 – ernazm 2011-04-14 11:32:30

回答

0

A.onCreate()中,您正在嘗試在設置任何與setContentView()有關的內容之前查找視圖。所以,list爲空和你在行得到一個NullPointerException(NPE)

list.setAdapter(adapter); 

檢查了這一點在logcat中,要學會發現問題。 LogCat是一個無價的工具。

+0

感謝回覆,但然後如何顯示在選項卡小部件中的聯繫人列表(圖像和名稱)? – devyani 2011-04-14 12:21:43

+0

@devyani:將'setContentView()'行移到'findViewById()'之前。如果您尚未設置任何內容,則無法查看視圖。 – bigstones 2011-04-14 12:26:47

+0

非常感謝......它正在工作...... :)如果您不介意可以詢問有關從數據庫中檢索數據的一個查詢? – devyani 2011-04-14 12:51:36