11

我无法开始一个新的活动点击我的列表视图中的项目。我想onItemClick可以打开ApkInfoActivity ..其实当我点击没有发生。如何打开新的活动点击列表视图中的项目?

protected void onItemClick(ListView l, View v, int position, long id, AdapterView<?> parent) { 
     super.onListItemClick(l, v, position, id); 

     final ApplicationInfo app = applist.get(position); 

     PackageInfo packageInfo = (PackageInfo) parent.getItemAtPosition(position); 

     AppDataActivity appData = (AppDataActivity) getApplicationContext(); 
     appData.setPackageInfo(packageInfo); 

     Intent appInfo = new Intent(getApplicationContext(), ApkInfoActivity.class); 
     startActivity(appInfo); 

    } 

我找不到问题..我可以如何解决?

编辑与logcat的:

10-29 17:14:07.710: E/AndroidRuntime(3535): FATAL EXCEPTION: main 
10-29 17:14:07.710: E/AndroidRuntime(3535): java.lang.ClassCastException: android.content.pm.ApplicationInfo cannot be cast to android.content.pm.PackageInfo 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at com.dd.application.MainActivity.onItemClick(MainActivity.java:369) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.widget.AdapterView.performItemClick(AdapterView.java:297) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.widget.AbsListView.performItemClick(AbsListView.java:1149) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2939) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.widget.AbsListView$2.run(AbsListView.java:3622) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.os.Handler.handleCallback(Handler.java:730) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.os.Looper.loop(Looper.java:137) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at android.app.ActivityThread.main(ActivityThread.java:5323) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at java.lang.reflect.Method.invoke(Method.java:525) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:743) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559) 
10-29 17:14:07.710: E/AndroidRuntime(3535):  at dalvik.system.NativeStart.main(Native Method) 
+0

'Intent appInfo = new Intent(ActivityName.this,ApkInfoActivity。类); startActivity(appInfo)'这是足够的,除非你想传递一些值到'ApkInfoActivity' – Raghunandan

+0

你是否以这种方式调用listView.onItemClickListener? –

+0

也做你的列表项目有按钮,所以他们采取的焦点,而不是 – Raghunandan

回答

-1

添加setOnItemclickListener()为您的列表视图。

+0

我在哪里把这部分? –

0

使用此:

Intent appInfo = new Intent(CurrentActivity.this, ApkInfoActivity.class); startActivity(appInfo);

+0

没有什么变化:( –

0

尝试改变从protected能见度public为你的方法头。

编辑

现在,我看它,你的方法的标题其实是错误的。它应该是以下内容:

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

变量必须与它们在它们实现的接口中的顺序相同。

+0

我也覆盖了该方法? –

+0

检查我的帖子编辑 –

16

用这个做你的工作

list.setOnItemClickListener(new AdapterView.onItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) { 
     Intent appInfo = new Intent(YourActivity.this, ApkInfoActivity.class); 
     startActivity(appInfo); 
    } 
}); 
+0

我在这里有一个错误:'new AdapterView.onItemClickListener()'..错误是:AdapterView.onItemClickListener无法解析为类型 –

10
public class MenuYangu extends ListActivity { 

String classes[] = { "Quiz Trivia", "Sign A New User", "Friend List", 
"Download A File", "Upload A File", "Select Pdf files", "Memory Game", 
"Dzidza Maths", "Write Exam" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ArrayAdapter<String>(Menuone.this, 
    android.R.layout.simple_list_item_1, classes)); 

} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 

if (position == 0) { 
Intent intent = new Intent(this, QuizActivity.class); 
startActivity(intent); 
} 
else if (position == 1) { 
Intent intent = new Intent(this, SignUp.class); 
startActivity(intent); 
} 
else if (position == 2) { 
Intent intent = new Intent(this, FriendList.class); 
startActivity(intent); 
} 
} 

} 

} 
+0

这是如何回答问题的? – Sufian

+0

例如,如果您想打开第一个视图,即在第0个位置的Quiz Trivia,它会打开您输入的愿望类别,对不起,我的英语很薄弱,希望您能理解 –

0

例如,如果ü要打开基于文本的活动ü单击列表视图,也就是说,如果“ABCD”是选项点击列表视图和u要开的非常相同的名称“ABCD”的活动,然后再执行这个..

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

    String temp=yourarray[position]; 


    try{ 
     Class myclass=Class.forName("yourpackagename."+temp); 
     Intent in=new Intent(this,myclass); 
     startActivity(in); 
     }catch(Exception e){ 

     } 


} 
-1
lv.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) { 
      if(position==0){ 
     Intent appInfo = new Intent(SwahiliService.this, DisplayActivity.class); 
      startActivity(appInfo); 
     } 
      if(position==1){ 
       Intent english=new Intent(SwahiliService.this,EnglishService.class); 
       startActivity(english); 
      } 
      if(position==2){ 
       Toast.makeText(getApplicationContext(),"You have selected pst3", Toast.LENGTH_LONG).show(); 
      } 
    }}); 
+1

请提供说明您的代码如何修复OP的问题。 – techspider

0

作出解释,以我的答案。我假设你已经按照你的发布代码的顺序设置了你的列表视图。我只会检查这部分代码: super.onListItemClick(l,v,position,id); 我不这是必要的。 在我给的例子的情况下:

lv.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) { 
     if(position==0){ 
    Intent appInfo = new Intent(SwahiliService.this, DisplayActivity.class); 
     startActivity(appInfo); 
    } 
     if(position==1){ 
      Intent english=new Intent(SwahiliService.this,EnglishService.class); 
      startActivity(english); 
     } 
     if(position==2){ 
      Toast.makeText(getApplicationContext(),"You have selected pst3", Toast.LENGTH_LONG).show(); 
     } 

我只是设置一个利斯特我的列表视图我称之为LV, 我的适配器(这是我的列表视图项目的持有人)设置了三个变量,一个查看,int为位置,long为参数:, 我指的是在列表视图中通过其位置选择的项目,通常从0开始(尽管您可以将它初始化为任意其他数字,如您所愿e,g int position = 1,在1)开始项目计数。 从这里你可以使用任何控制结构来启动每个项目单击的活动,在我的情况下,我使用了for循环,因为我认为我的listview只有三个项目,对于较大的listview项目,你可以使用for-loop。 请注意我是如何开始我的新活动的,首先引用当前活动如下(SwahiliService.this),可以安全地用(仅限此关键字)替换,然后遵循我想要开始的活动。 我希望现在更详细。

相关问题