Ошибка ListView возникает в методе onCreate? - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь использовать 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)

Я надеюсь, что кто-нибудь может сказать мне, что я делаю неправильно.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Измените свой идентификатор listView с помощью этой android:id="@android:id/list" проверки, помогает ли это.

2 голосов
/ 09 февраля 2012

В вашем макете main.xml у вас должен быть элемент ListView с идентификатором (расширение ListActivity требует этого):

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

Кроме того, поскольку вы расширили класс ListActivity, вы можетеполучить ListView, вызвав метод getListView():

ListView lv = getListView();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...