0

Android初心者として、私はさまざまなことに取り組んでいます。ここでの問題は、「onListItemClick」で新しいインテント アクティビティを開始しようとしていることです。このためのメソッドを設定しましたが、リスト内の項目をクリックして AVD を実行すると、何も起こらず、インテントが開始されません。

スーパー クラスを 'ListActivity' に変更すると、'your content must have a listview that id attribute is 'android.r.id.list'' というクラッシュ メッセージが表示されます。

リストビューのアイテムをクリックしてもインテントが開始されない理由を誰か教えてもらえますか? これが私のリストビュークラスです:

package com.example.sqliteexample;



import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;

public class SQLView extends ListActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    HotOrNot H = new HotOrNot(this, null, null);

    setContentView(R.layout.layout);
    ListView listContent = (ListView)findViewById(R.id.contentList);

    HotOrNot Content = new HotOrNot(this, null, null);
    Content.open();
    Cursor cursor = Content.getData();

    startManagingCursor(cursor);

    @SuppressWarnings("static-access")
    String [] from = new String [] {H.KEY_NAME, H.KEY_HOTNESS};
    int [] to = new int [] {R.id.txtName, R.id.txtAge};

    @SuppressWarnings("deprecation")
    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.entries, cursor, from, to);

    listContent.setAdapter(cursorAdapter);
 }


public void onListItemClick(ListView l, View v, int posistion, long id)
{

    Intent i = new Intent("com.example.sqliteexample.SQLiteExample");

    startActivity(i);
}




}
4

5 に答える 5

2

a を使用する場合は、次のListActivity行は必要ありません。

ListView listContent = (ListView)findViewById(R.id.contentList);

しかし、現在参照されている特定ListViewのもの (対応する xml レイアウトにある場合) は、id を次のように変更する必要があります。

<ListView
  android:id="@android:id/list"
.....
于 2013-01-11T17:37:40.447 に答える
0

Activity - 通常の目的で使用 ListActivity - リストの表示に集中する場合に使用します。

アクティビティに対する ListActivity の利点:

  1. リストのテキスト表示のみがある場合は、レイアウト ファイルを定義する必要さえないため、setContentView()呼び出す必要はありません。
  2. リスト以外のもの (TextView など) をレイアウト ファイルに表示する必要がある場合は、@android:id/xxx を使用するだけandroid.R.layout.simple_list_item_1で、アダプターのレイアウト リソース パラメーターが xml で定義されたこのリストに対応します。
  3. 最初にリストを定義してから呼び出す代わりに、直接setAdapter()呼び出すだけです。setListAdapter()
  4. setOnClickListener()リストにOnClickListener を実装してから を使用する必要はありませんonItemClick()。を使用するだけonListItemClick()です。
于 2015-05-23T16:33:19.220 に答える
0

layout.xml ファイル内で ListView 要素を調整して、以下のようにします。最も重要なのは次のandroid:id行です。

<ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" >
    </ListView>
于 2013-01-11T17:36:37.063 に答える
0

「your content must have a listview that id attribute is 'android.r.id.list''」というクラッシュ メッセージが表示される

これは、拡張したときに発生しますListActivityが、xml (あなたの場合は layout.xml) に属性リストがありません。ListActivityの作成方法については、この例を参照してください

アクティビティまたはリストアクティビティを拡張しますか?

この質問に対する回答は、要件によって異なります。

于 2013-01-11T17:34:54.353 に答える
0
listContent.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long id) {

                Intent i = new Intent("com.example.sqliteexample.SQLiteExample");
                startActivity(i);
        }
    });
于 2013-01-11T17:43:08.413 に答える