我正在尝试使用ListView
添加Fragment
。我知道可以通过扩展ListFragment
等来完成。但我想扩展Fragment
,然后添加listView
。但是以下代码不起作用(它也没有显示任何错误)。
片段类
public class OtherFragment extends Fragment {
final String[] items = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.activity_main, container,false);
ListView list = (ListView)view.findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
list.setAdapter(adapter);
return view;
}
}
片段
的XML文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
MainActivity(主类)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager fm= getFragmentManager();
if(fm.findFragmentById(R.id.fragmentContent)==null)
{
Log.d("add fragment", "fragment added");
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragmentContent, new OtherFragment());
ft.commit();
}
}
}
main.xml(主xml文件)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/fragmentContent"
android:layout_width="0px"
android:layout_height="match_parent"/>
</RelativeLayout>
修正:
android:layout_width="match_parent"
丑陋的错误。谢谢nininho
答案 0 :(得分:0)
您的主要活动需要扩展FragmentActivity,而不仅仅是活动
public class MainActivity extends FragmentActivity {
您的布局需要是片段而不是线性布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Fragment
android:id="@+id/fragmentContent"
android:layout_width="0px"
android:layout_height="match_parent"/>
</RelativeLayout>
答案 1 :(得分:0)
修正:
android:layout_width="match_parent"
丑陋的错误。
答案 2 :(得分:0)
最好使用LisFragment
,这样可以避免将来出现其他问题。有些事情,比如你用列表视图打开正常片段之上的片段,你会遇到onCLick处理的一些问题