Java 我无法将我的活动扩展到listactivity。需要帮助
我无法将我的活动扩展到listactivity。我想将其扩展到listactivity,并将onclicklistener添加到列表项中Java 我无法将我的活动扩展到listactivity。需要帮助,java,android,android-intent,android-listview,Java,Android,Android Intent,Android Listview,我无法将我的活动扩展到listactivity。我想将其扩展到listactivity,并将onclicklistener添加到列表项中 public class MainActivity extends Activity { private ListView lView; private ArrayList results = new ArrayList(); @Override protected void onCreate(Bundle savedIns
public class MainActivity extends Activity {
private ListView lView;
private ArrayList results = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lView = (ListView) findViewById(R.id.lvApps);
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List < ResolveInfo > list = pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo: list) {
results.add(rInfo.activityInfo.applicationInfo
.loadLabel(pm).toString());
Log.w("Installed Applications", rInfo.activityInfo.applicationInfo
.loadLabel(pm).toString());
}
lView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, results));
}
}
公共类MainActivity扩展活动{
私有列表视图lView;
private ArrayList results=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lView=(ListView)findviewbyd(R.id.lvApps);
PackageManager pm=this.getPackageManager();
意图=新意图(Intent.ACTION\u MAIN,空);
intent.addCategory(intent.CATEGORY_启动器);
ListList=pm.querytentActivities(intent,PackageManager.PERMISSION_已授予);
对于(ResolveInfo-rInfo:list){
结果.添加(rInfo.activityInfo.applicationInfo)
.loadLabel(pm.toString());
Log.w(“已安装的应用程序”,rInfo.activityInfo.applicationInfo
.loadLabel(pm.toString());
}
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,results));
}
}
如果要使用列表活动
,则不需要此行:
ListView lView = (ListView) findViewById(R.id.lvApps);
但是当前引用的特定列表视图
必须将其id更改为
<ListView
android:id="@android:id/list"
.....
使用以下代码:
public class MainActivity extends ListActivity implements OnItemClickListener{
private ArrayList results = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List < ResolveInfo > list = pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo: list) {
results.add(rInfo.activityInfo.applicationInfo
.loadLabel(pm).toString());
Log.w("Installed Applications", rInfo.activityInfo.applicationInfo
.loadLabel(pm).toString());
}
getListView().setOnItemClickListener(this);
setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, results));
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
}
}
public类MainActivity扩展了ListActivity实现了ListListener{
private ArrayList results=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
PackageManager pm=this.getPackageManager();
意图=新意图(Intent.ACTION\u MAIN,空);
intent.addCategory(intent.CATEGORY_启动器);
ListList=pm.querytentActivities(intent,PackageManager.PERMISSION_已授予);
对于(ResolveInfo-rInfo:list){
结果.添加(rInfo.activityInfo.applicationInfo)
.loadLabel(pm.toString());
Log.w(“已安装的应用程序”,rInfo.activityInfo.applicationInfo
.loadLabel(pm.toString());
}
getListView().setOnItemClickListener(此);
setListAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,results));
}
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
//TODO自动生成的方法存根
}
}
解释:
ListActivity有一个默认布局,该布局由位于屏幕中心的单个全屏列表组成。因此,您可以直接设置适配器
看一看以供参考
我希望这会有帮助 实现MClickListener
public class MainActivity extends ListActivity implements OnItemClickListener
{
//your code;
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
// TODO Auto-generated method stub
results.get(pos); //this will give you the value in the clicked list item as per your code
}
}
public类MainActivity扩展了ListActivity实现了ListListener
{
//你的代码;
@凌驾
公共链接(AdapterView arg0、视图arg1、内部位置、长arg3){
//TODO自动生成的方法存根
results.get(pos);//这将根据您的代码给出单击列表项中的值
}
}
出现了什么错误?在公共类MainActivity extends Activity中使用extends ListActivity只要我有“公共类MainActivity extends Activity”代码运行良好,但当我尝试将其更改为“公共类MainActivity extends ListActivity”时,我就可以使用“onListItemClick”(ListView l,View v,int position,long id)“要访问listitem的位置,我得到错误”java.lang.RuntimeException:无法启动活动组件信息您的内容必须有一个id属性为“android.R.id.list”的ListView”。布局中的ListView id必须设置为android:id=“@android:id/list”这就是listactivity知道如何找到ListView的方式如果您使用的是带有列表视图的布局,则不必扩展listactivity您可以扩展活动,您可以执行ListView ListView=(ListView)findViewById(R.id.yourlayout);ListView.setOnItemClickListener(This);如果要扩展ListActivty,则不必使用ListView.05-15 17:19:52.383:E/AndroidRuntime(6370):java.lang.RuntimeException:无法启动活动组件信息{com.ku.installedapps/com.ku.installedapps.MainActivity}:java.lang.RuntimeException:您的内容必须有一个id属性为“android.R.id.list”的ListView。如果您想使用listactivity,根据我的回答,您不需要xml文件中的ListView,但您的错误表明您的xml文件中已经有一个ListView,它没有id,如android:id=“@android:id/list”
。请查看Manish Android给出的答案,或者参考与我的答案链接的文档。我的xml文件和我没有任何xml列表视图,正如你所看到的,但我仍然收到错误java.lang.RuntimeException:无法启动activity ComponentInfo{com.ku.installedapps/com.ku.installedapps.MainActivity}:java.lang.RuntimeException:您的内容必须具有id属性为“android.R.id.list”的ListView:(@mehhance:检查我的更新答案,您需要避免setContentView(R.layout.activity\u main);
否则系统将转到该xml文件以查找id为的listviewandroid:id=“@android:id/list”
Thankyou…问题已解决。问题是由于setcontentview:)引起的。再次感谢