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 を別のアクティビティから起動しようとしていますが、「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か??

4

3 に答える 3

1

あなたのエラーは明確に示しています:

E/AndroidRuntime(2010): java.lang.RuntimeException: アクティビティ ComponentInfo を開始できません{com.example.listinflator_demo/com.example.listinflator_demo.ListPage}: java.lang.RuntimeException: Your content must have a ListView that which id attribute is 「android.R.id.list」」

XML Layout file:list_pageで、 id: でオブジェクトを定義したcontentViewことを確認してください。ActivityListViewlist

于 2013-04-30T08:34:06.270 に答える
0

ListActivityには、画面の中央にある 1 つのフルスクリーン リストで構成される既定のレイアウトがあります。ただし、必要に応じて、onCreate() の setContentView() で独自のビュー レイアウトを設定することにより、画面レイアウトをカスタマイズできます。これを行うには、独自のビューに ID "@android:id/list" (コード内の場合はリスト) を持つ ListView オブジェクトが含まれている必要があります。

android:id="@android:id/list"list_page.xml に listview を追加 してください

お気に入り:

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

詳細については、このリンクを確認してください。ここに例があります


編集:

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);
}
于 2013-04-30T08:43:54.217 に答える
0

string-array を使用して月を格納したため、string 型の ArrayAdapter を使用する必要があると思います

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

PS::上記の次の変更を行う際に、最初の ArrayAdapter 宣言を削除してください

于 2013-06-11T06:46:55.287 に答える