2012-09-21 68 views
1

我正在嘗試在同一活動中製作webview和listview。我有一個ID爲list_xc的列表視圖,但是在我的content must have a ListView whose id attribute is 'android.R.id.list的logcat顯示中。 這裏是我的佈局文件:在同一活動中的webview和listview

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

<TextView 
    android:id="@+id/tv_xc" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="8dp" 
    android:layout_marginTop="3dp" 
    android:text="Cross Country (XC)" 
    android:textColor="#372c24" 
    android:textSize="20dp" 
    android:textStyle="bold" /> 

<WebView 
    android:id="@+id/webview_xc" 
    android:layout_width="match_parent" 
    android:layout_height="166dp" /> 

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

,這裏是我行佈局:

<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" > 

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

,這裏是我的活動:

public class Information_XC_Activity extends ListActivity { 
WebView mWebView; 
TextView tv; 
private Adapter_DetailPolXC adapterDetailPolXC; 

private ListView mainListView; 

// private ArrayAdapter<String> listAdapter; 

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

    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.webview_xc); 

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

    ArrayList<Entity_Detail_Product> arraylist = new ArrayList<Entity_Detail_Product>(); 

    adapterDetailPolXC = new Adapter_DetailPolXC(this, R.layout.info_row, 
      arraylist); 

    mainListView = (ListView) findViewById(R.id.list_xc); 
    mainListView.setAdapter(adapterDetailPolXC); 

    new info_xc_dao(response).view_pol_xc(); 
} 

pol_xc_Result response = new pol_xc_Result() { 
    @Override 
    public void gotResult(Object obj, String message, int action) { 
     // TODO Auto-generated method stub 
     // actionBar.setProgressBarVisibility(View.INVISIBLE); 

     @SuppressWarnings("unchecked") 
     ArrayList<Entity_Detail_Product> arrayList = (ArrayList<Entity_Detail_Product>) obj; 
     AlertDialog.Builder builder = new AlertDialog.Builder(
       Information_XC_Activity.this); 

     if (arrayList == null) { 
      builder.setIcon(R.drawable.alert_warning); 
      builder.setTitle("Error"); 
      builder.setMessage("Data Not Found !"); 
      builder.setNegativeButton("Ok", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int which) { 
         } 
        }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 

     } else { 
      for (Entity_Detail_Product entity_Detail_Product : arrayList) { 
       adapterDetailPolXC.add(entity_Detail_Product); 
      } 
      adapterDetailPolXC.notifyDataSetChanged(); 
     } 

    } 

}; 

private class Adapter_DetailPolXC extends 
     ArrayAdapter<Entity_Detail_Product> { 
    private ArrayList<Entity_Detail_Product> items; 

    public Adapter_DetailPolXC(Context context, int textViewResourceId, 
      ArrayList<Entity_Detail_Product> items) { 
     super(context, textViewResourceId, items); 
     this.items = items; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater layoutInflater = (LayoutInflater) getContext() 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = (View) layoutInflater.inflate(R.layout.info_xc, null); 
     } 
     Entity_Detail_Product adapter_Detail_Product = items.get(position); 
     if (adapter_Detail_Product != null) { 
      TextView textView = (TextView) v.findViewById(R.id.tv_test); 
      if (textView != null) 
       textView.setText(adapter_Detail_Product.getModel_name()); 
     } 
     return v; 
    } 

} 

和這裏的logcat的:

09 -21 03:22:49.029:E/AndroidRuntime(22732 ):java.lang.RuntimeException:無法啓動活動ComponentInfo {com.wilis.hellotabwidget/com.wilis.hellotabwidget.Information_XC_Activity}:java.lang.RuntimeException:您的內容必須有一個ListView,其id屬性爲'android.R。 id.list' 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 09-21 03:22:49.029:E/AndroidRuntime 22732):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.app.ActivityThread.access $ 1500(ActivityThread.java:117 ) 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:935) 09-21 03:22:49.029:E/AndroidRuntime(22732) ):在android.os.Handler.dispatchMessage(Handler.java:99) 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.os.Looper.loop(Looper.java:130) 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.app.ActivityThread.main(ActivityThread.java:3687) 09-21 03:22:49.029:E/AndroidRuntime(22732):at java.lang.reflect.Method.invokeNative(Native Method) 09-21 03 :22/49.029:E/AndroidRuntime(22732):在java.lang.reflect.Method.invoke(Method.java:507) 09-21 03:22:49.029:E/AndroidRuntime(22732):at com.android .internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867) 09-21 03:22:49.029:E/AndroidRuntime(22732):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :625) 09-21 03:22:49.029:E/AndroidRuntime(22732):at dalvik.system.NativeStart.main(Native Method) 09-21 03:22:49.029:E/AndroidRuntime(2 2732):引起:java.lang.RuntimeException:你的內容必須有一個ListView的id屬性是'android.R.id.list' 09-21 03:22:49.029:E/AndroidRuntime(22732):at android .app.ListActivity.onContentChanged(ListActivity.java:243) 09-21 03:22:49.029:E/AndroidRuntime(22732):at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212 ) 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.app.Activity.setContentView(Activity.java:1657) 09-21 03:22:49.029:E/AndroidRuntime(22732): at com.wilis.hellotabwidget.Information_XC_Activity.onCreate(Information_XC_Activity.java:35) 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-21 03:22:49.029:E/AndroidRuntime(22732):at android.app.ActivityThread.p erformLaunchActivity(ActivityThread.java:1615)

謝謝你這麼多,我真的需要幫助。

回答

0

ListActivity不要求你通過的setContentView()方法分配佈局給它,如果你只是想顯示一個ListView ListActivity默認包含一個ListView。

如果您需要在ListActivity中包含比ListView更多的視圖,您仍然可以爲您的活動分配一個佈局。在這種情況下,您的佈局必須包含一個ListView,android:id屬性設置爲@android:id/list。所以請修改代碼。

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

如果您使用與@android視圖:ID /空ID在你的佈局,ListActivity會自動顯示由此看來,如果ListView控件是空的,隱藏它,否則。

1

由於您的Information_XC_Activity擴展爲ListActivity,它必須具有帶錯誤消息中指定的id的ListView。這條線

android:id="@+id/list_xc" 

改成這樣:

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

如果你擴展ListActivity,你的android:id =「@ + id/list_xc」必須是android:id =「@ android:id/list」