我创建了一个 ListView 来列出所有活动,但是当我想调用该方法时,我找不到 getListView
我的activity_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/ListActivity"
android:layout_width="wrap_content"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
并且在我的 MainActivity.java 中似乎出现了错误
getListView
方法,我不知道为什么
答案 0 :(得分:4)
使用getListView()
而不是通常的ListActivity
时,您可以使用Activity
。在您的代码中,您错了并使ListView
id “成为视图”ListActivity的特殊标识符,因此您只需在代码中访问它
ListView lv = (ListView) findViewById(R.id.ListActivity);
答案 1 :(得分:2)
尝试使用(ListView)findViewById(R.id.ListActivity)
而不是getListView()
答案 2 :(得分:2)
如果您在片段中有ListView,则可以使用:
ListView list = (ListView)findViewById(android.R.id.list);
但是如果你想直接使用getListView,你必须将ListView的id称为
android:id="@android:id/list"
希望得到这个帮助。
答案 3 :(得分:2)
您的活动必须从ListActivity
继承。你的课应该从
public class MyListAdapter extends ListActivity {
...
}
然后你可以使用方法
getListView()
第二个解决方案
如果您使用片段,则可以使用
访问ListView
ListView lv = (ListView) rootView.findViewById(R.id.id_of_your_listView);
rootView
是您在onCreateView
片段方法中获得的视图
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.example_fragment, container, false);
return rootView;
}
答案 4 :(得分:1)
您无法扩展ListActivity
因为1)您想要使用片段而2)setSupportActionBar
类没有方法ListActivity
...
无论如何......在你的问题中
我的activity_fragment.xml
<!-- XML code -->
由于findViewById
不在ListView
范围内,您无法使用Activity
在ListView
课程中获取activity_main.xml
。
你必须在Fragment中做到这一点。
public class YourFragment extends Fragment {
private ListView yourListView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_fragment, container, false);
this.yourListView = (ListView) v.findViewById(R.id.listView);
// adapter stuff...
return v;
}
}
答案 5 :(得分:1)
另请注意,您没有将ListView传递给适配器,而是将适配器传递给ListView
ListView list = (ListView)findViewById(R.id.ListActivity);
list.setAdapter(adapter);