0

こんにちは、Android アプリケーションの onItemClick に問題があります。試してみますが、エラーが発生します。リストビューで sqlite データベースからデータを取得し、このリストの値をクリックして、この値で他のアクティビティを開始できるようにしたいと考えています。詳細については、私のコードを参照してください。

私の活動:

public class ShowActivity extends ListActivity {

私の方法:

private void ladeDaten() {
        Cursor KlassenCursor = mDatenbank.rawQuery(KLASSEN_SELECT_ROW, null); 
        startManagingCursor(KlassenCursor); 

        android.widget.SimpleCursorAdapter KlassenAdapter = new android.widget.SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1, 
                KlassenCursor, 
                new String[] {"name"},
                new int[] {
                android.R.id.text1
                });

        setListAdapter(KlassenAdapter);

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

        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent,View view,int position,long id){

                Cursor cursor = (Cursor)parent.getItemAtPosition(position);

                String item = cursor.getString(cursor.getColumnIndex("name"));

                Intent intent = new Intent(this,ShowActivity.class); //here is the error

                intent.putExtra("iteid", item); 

                startActivity(intent);
            }
        });

    }

私のレイアウト:...

    </ListView>

...

私のエラー:

The constructor Intent(new AdapterView.OnItemClickListener(){}, Class<ShowActivity>) is undefined

私に何ができる?:(

アップデート:

public void onItemClick(AdapterView<?> parent,View view,int position,long id){

                Cursor cursor = (Cursor)parent.getItemAtPosition(position);

                String item = cursor.getString(cursor.getColumnIndex("name"));

                Intent intent = new Intent(ShowDayActitiy,ShowDayActivity.class); //here is the error

                intent.putExtra("iteid", item); 

                startActivity(intent);
            }
        });

私は彼らの活動を始めたいです:(

4

8 に答える 8

2

これは、インテントを作成するときの最初のパラメーターが context であるためです。onClick() からインテントを作成しているため、その中のコンテキストは外部アクティビティのものではありません。インテントには、現在のアクティビティのコンテキストが最初のパラメーターとして含まれている必要があります

したがって、これを使用する代わりにShowActivity.thisorを使用しますgetApplicationContext()

Intent intent = new Intent(getApplicationContext(), SecondActivity.class)

また

Intent intent = new Intent(FirstActivity.this, SecondActivity.class)

トリックを行います。

その他ご不明な点はお気軽にご質問ください

于 2013-01-23T12:42:49.733 に答える
1

AdapterView親

parent.getitematpostion(postion).toString()。を使用すると役立ちます。

于 2013-01-23T12:50:37.273 に答える
1

これを変える

Intent intent = new Intent(this,ShowActivity.class); 

Intent intent = new Intent(ShowActivity.this,ShowActivity.class); 
于 2013-01-23T12:36:32.070 に答える
1

使用する

Intent intent = new Intent(ShowActivity.this,ShowActivity.class);

また

Intent intent = new Intent(view.getContext(),ShowActivity.class);

それ以外の

Intent intent = new Intent(this,ShowActivity.class);

アクティビティを開始するには、ビューの代わりにアクティビティ コンテキストを渡す必要があります

于 2013-01-23T12:36:51.613 に答える
1

インテント コードに問題があります

Intent intent = new Intent(getapplicationContext(),ShowActivity.class); 
intent.putExtra("iteid", item); 
startActivity(intent);
于 2013-01-23T12:39:31.047 に答える
1

Intent intent = new Intent(ShowActivity.this,ShowActivity.class);nItemClickListener で「this」を使用すると設定され、Activity コンテキストを取得できませんでした。

于 2013-01-23T12:40:33.067 に答える
1

コード内の OnItemClickListener() のインポートを確認してください。adapter.onitemClickListener を使用しました。

そのインポートを削除して、ListView.onItemClickListenerをインポートします。

使用できます

onItemClick(AdapterView adapterView, View ビュー, int position, long value) {}

于 2013-01-23T12:40:04.753 に答える