在不扩展ListFragment的情况下将列表添加到片段

时间:2013-03-28 19:05:58

标签: android android-listview android-fragments

我正在尝试使用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

3 个答案:

答案 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处理的一些问题