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.thisgetApplicationContext()代替使用这个

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

或者

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

会成功的。

请随时提出任何进一步的疑问

于 2013-01-23T12:42:49.733 回答
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);

要启动 Activity,您需要传递 Activity 上下文而不是视图

于 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

检查代码中 OnItemClickListener() 的导入。您使用了 adapter.onitemClickListener。

删除该导入并导入ListView.onItemClickListener

您可以使用

onItemClick(AdapterView adapterView, View view, int position, long value) {}

于 2013-01-23T12:40:04.753 回答
1

Intent intent = new Intent(ShowActivity.this,ShowActivity.class);当您在 nItemClickListener 中使用“this”时设置,您没有获得 Activity 上下文。

于 2013-01-23T12:40:33.067 回答
1

AdapterView 父级

使用 parent.getitematpostion(postion).toString()。它会帮助你。

于 2013-01-23T12:50:37.273 回答
-1

请更正代码

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        setContentView(R.layout.showroom);        
        initView(); 



        ListView list = getListView();
        list.setOnItemClickListener(new OnItemClickListener() {
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {




         if(dialog != null)  dialog.dismiss();
            Dialog_Sh_Adapter task = new Dialog_Sh_Adapter(GStore.this, data);
            setListAdapter(task); 


                }
            });
于 2018-08-31T18:55:04.577 回答