【问题标题】:ListView error occurs in the onCreate method?onCreate方法出现ListView错误?
【发布时间】:2012-05-08 13:19:33
【问题描述】:

我正在尝试使用ListView,就像在此页面上一样:

http://developer.android.com/resources/tutorials/views/hello-listview.html

我想使用setContentView,然后使用我放在该布局上的ListView。这是我的代码:

public class ListViewTrainingsActivity extends ListActivity{

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);    // It gives me error here?

  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",
            "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
            "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
            "British Virgin Islands"};

  setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));

  ListView lv = (ListView) findViewById(android.R.id.list);
  lv.setTextFilterEnabled(true);

  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      // When clicked, show a toast with the TextView text
      Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
          Toast.LENGTH_SHORT).show();
    }
  });

}
  }

我收到一条错误消息:

 E/AndroidRuntime(306): FATAL EXCEPTION: main
 E/AndroidRuntime(306): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yahya.ListViewTrainings/com.yahya.ListViewTrainings.ListViewTrainingsActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
 E/AndroidRuntime(306):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
 .
 .
 .
 E/AndroidRuntime(306): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
 E/AndroidRuntime(306):     at android.app.ListActivity.onContentChanged(ListActivity.java:245)
 E/AndroidRuntime(306):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
 E/AndroidRuntime(306):     at android.app.Activity.setContentView(Activity.java:1647)
 E/AndroidRuntime(306):     at com.yahya.ListViewTrainings.ListViewTrainingsActivity.onCreate(ListViewTrainingsActivity.java:17)

我希望有人能告诉我我做错了什么。

【问题讨论】:

  • 对我来说看起来像这个问题:stackoverflow.com/questions/885009/… ListView lv = (ListView) findViewById(android.R.id.list); 删除 android 和 eclipse 添加到 import 列表的引用

标签: android android-listview


【解决方案1】:

在您的布局main.xml 中,您必须有一个带有id 的ListView 元素(扩展ListActivity 需要这个):

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

另外因为你扩展了ListActivity类,你可以通过调用getListView()方法得到ListView

ListView lv = getListView();

【讨论】:

    【解决方案2】:

    使用 android:id="@android:id/list" 更改您的 listView id 检查是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多