2013-04-30 2 views
2
public class ListPage extends ListActivity 
{ 

ListView months; 
ArrayAdapter my; 
String[] monthlist = {"jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sept", "oct", "nov", "dec"}; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.list_page); 

    months = (ListView)findViewById(R.id.list); 

    my = new ArrayAdapter(this,android.R.layout.simple_list_item_1,monthlist); 

    months.setAdapter(my); 
} 

}Как запустить ListActivity, используя намерение?

Я пытаюсь запустить эту ListActivity от другой деятельности, но получает ошибку «04-30 08: 30: 45.234:

E/AndroidRuntime(2010): java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.example.listinflator_demo/com.example.listinflator_demo. 
ListPage}: java.lang.RuntimeException: Your content must have a ListView 
whose id attribute is 'android.R.id.list'" 

, если я изменю extends ListActivity к extends Activity, в код прекрасно работает Как заставить его работать, используя extends ListActivity ??

+1

Ваше содержание должно иметь ListView, идентификатор атрибута «android.R.id.list» « – njzk2

ответ

0

ListActivity имеет макет по умолчанию, который состоит из единого полноэкранного списка в центре экрана. Однако, если вы хотите, вы можете настроить макет экрана, установив собственный макет представления с помощью setContentView() в onCreate(). Чтобы сделать это, ваш собственный взгляд должен содержать объект ListView с идентификатором «@android: ID/список» (или список, если это в коде)

так добавить android:id="@android:id/list" в ListView в вашем list_page.xml

как :

<ListView android:id="@android:id/list" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="#00FF00" 
       android:layout_weight="1" 
       android:drawSelectorOnTop="false"/> 

этот link для получения более подробной информации. здесь example


Отредактировано:

, если вы будете использовать ListActivity, то ваш код будет:

public class ListPage extends ListActivity 
{ 


ArrayAdapter my; 
String[] monthlist = {"jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sept", "oct", "nov", "dec"}; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.list_page); 



    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, monthlist); 
    setListAdapter(adapter); 
} 
+0

» месяцев = (ListView) findViewById (R.id.list); " теперь эта строка показывает ошибку, в которой говорится, что« список не может быть разрешен или не является полем » Ват, что я делаю сейчас? –

+0

признать это как ans ..... –

1

Ваша ошибка ясно указывает:.

E/AndroidRuntime (2010): java.lang.RuntimeException: не удалось запустить Activity ComponentInfo {com.example.listinflator_demo/com.example.listinflator_demo.ListPage}: java.lang.RuntimeException: ваш контент должен иметь ListView, атрибут идентификатор "android.R.id.list»

Убедитесь, что в файле XML Layout: list_page, что вы настраиваете как contentView для вас Activity вы определили ListView объект с идентификатором: list.

0

Я думаю, вы должны использовать ArrayAdapter строкового типа, так как вы использовали строка-массив для хранения месяцев

ArrayAdapter<string> my = new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1,monthlist); 

PS :: удалить объявление ArrayAdapter в начале, пока вы сделаете следующее выше изменения

Смежные вопросы