0

同じアクティビティでWebビューとリストビューを作成しようとしています。これが私のレイアウトファイルです:

<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

いくつかのことがわかりますが、間違っている可能性があります。コードを見ているだけで、テストしていません。

クラスはActivityの代わりにListActivityを拡張するべきではありませんか?

次のことは、あなたのクラスには次のようなものがあります。

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

ただし、XMLではlistViewのIDが異なります。

android:id="@+id/listtest"

私はこれがすべきだと思います

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

もう1つは、TextViewのIDが間違っていることです。tv_test2の代わりにtv_testを探しています

お役に立てれば。

于 2012-09-19T13:54:13.197 に答える
0

2つの問題があります。最初にリストビューのIDです。変化する

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

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

Eclipseに変更を認識させるには、android.R。*のインポートを削除する必要があるかもしれません。

次に、アダプタに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にplanetListのコンテンツを書き込む必要があるtextViewを通知します。

于 2012-09-19T14:04:43.760 に答える
0

tv は TextView を参照している必要があります: findViewById()!

于 2012-09-19T13:50:29.830 に答える