0

我正在尝试在同一活动中创建 webview 和 listview。这是我的布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white" >

<com.markupartist.android.widget.ActionBar
    android:id="@+id/actionbar"
    style="@style/ActionBar" />

<WebView
    android:id="@+id/webView1"
    android:layout_width="match_parent"
    android:layout_height="210dp" />

<ListView
    android:id="@+id/listtest"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

<TextView 
    android:id="@+id/tv_test2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="16sp"/>

这是我的行布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical" >

<com.markupartist.android.widget.ActionBar
    android:id="@+id/actionbar"
    style="@style/ActionBar" />

<TextView
    android:id="@+id/tv_test"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

这是我的活动:

public class Tab_Bike_Information_Activity extends Activity {
WebView mWebView;
TextView tv;
private ListView mainListView;
private ArrayAdapter<String> listAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tessss);

    final ActionBar actionBar = (ActionBar) findViewById(R.id.actionbar);
    actionBar.setTitle(getString(R.string.app_name));

    int index = getIntent().getIntExtra("text", 0);

    mWebView = (WebView) findViewById(R.id.webView1);

    String temp = "<html><body>" + "<p align=\"justify\">"
            + getString(R.string.xc_info + index) + "</p> "
            + "</body></html>";
    mWebView.loadData(temp, "text/html", "utf-8");


    mainListView = (ListView) findViewById(android.R.id.list );  

    // Create and populate a List of planet names.  
    String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",  
                                      "Jupiter", "Saturn", "Uranus", "Neptune"};    
    ArrayList<String> planetList = new ArrayList<String>();  
    planetList.addAll( Arrays.asList(planets) );  

    // Create ArrayAdapter using the planet list.  
    listAdapter = new ArrayAdapter<String>(this, R.layout.tessss_row, planetList);  

    // Add more planets. If you passed a String[] instead of a List<String>   
    // into the ArrayAdapter constructor, you must not add more items.   
    // Otherwise an exception will occur.  
    listAdapter.add( "Ceres" );  
    listAdapter.add( "Pluto" );  
    listAdapter.add( "Haumea" );  
    listAdapter.add( "Makemake" );  
    listAdapter.add( "Eris" );  


    tv = (TextView) findViewById(R.id.tv_test);

}

这是logcat:

09-19 20:04:04.659: E/AndroidRuntime(13951): FATAL EXCEPTION: main
09-19 20:04:04.659: E/AndroidRuntime(13951): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wilis.hellotabwidget/com.wilis.hellotabwidget.Tab_Bike_Information_Activity}: java.lang.NullPointerException
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.os.Looper.loop(Looper.java:130)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.app.ActivityThread.main(ActivityThread.java:3687)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at java.lang.reflect.Method.invokeNative(Native Method)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at java.lang.reflect.Method.invoke(Method.java:507)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at dalvik.system.NativeStart.main(Native Method)
09-19 20:04:04.659: E/AndroidRuntime(13951): Caused by: java.lang.NullPointerException
09-19 20:04:04.659: E/AndroidRuntime(13951):    at com.wilis.hellotabwidget.Tab_Bike_Information_Activity.onCreate(Tab_Bike_Information_Activity.java:75)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-19 20:04:04.659: E/AndroidRuntime(13951):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
09-19 20:04:04.659: E/AndroidRuntime(13951):    ... 11 more

有人可以帮忙吗?谢谢

4

3 回答 3

2

我看到了几件事,但我可能是错的,我只是在看代码并没有对其进行测试。

类不应该扩展 ListActivity 而不是 Activity 吗?

接下来的事情是,在你的课堂上,你有:

mainListView = (ListView) findViewById(android.R.id.list); 

但在您的 XML 中,listView 具有不同的 ID:

android:id="@+id/listtest"

我认为这应该是

android:id="@+id/android:list"

另一个是TextView的id是错误的。您正在寻找tv_test而不是tv_test2

希望这可以帮助。

于 2012-09-19T13:54:13.197 回答
0

tv 必须指的是您的 TextView :findViewById()!

于 2012-09-19T13:50:29.830 回答
0

我看到两个问题:首先是您的列表视图的 ID。改变

mainListView = (ListView) findViewById(android.R.id.list );

mainListView = (ListView) findViewById(R.id.listtest );

也许您需要删除 android.R.* 的导入以使 Eclipse 识别更改。

其次,在您的适配器中,现在指定了 TextView。
改变

listAdapter = new ArrayAdapter<String>(this, R.layout.tessss_row, planetList);

listAdapter = new ArrayAdapter<String>(this, R.layout.tessss_row, R.id.tv_test, planetList);

让 ArrayAdapter 知道应该在哪个 textView 中写入planetList 的内容。

于 2012-09-19T14:04:43.760 回答