Fragment中的Listview

时间:2014-05-20 06:15:38

标签: android listview android-fragments

我正在尝试将包含listview的片段附加到活动中。我尝试了很多东西,但每次我的应用程序都崩溃了。我不知道我的代码有什么问题。 要将onclick属性设置为listview,我尝试实现Adapter.onItemCliclListerner。这也是有效的。这是另一个问题。

    public class Fragment1 extends Fragment  {
ListView list;


    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub

    View view = inflater.inflate(R.layout.fragment1_layout, container, false);
    list = (ListView) getActivity().findViewById(R.id.listView1);

    ArrayAdapter<CharSequence> adapter = 
        ArrayAdapter.createFromResource(getActivity(),  R.array.chapters, 
        android.R.layout.simple_dropdown_item_1line);
    list.setAdapter(adapter);
        //      list.setOnItemClickListener(this);
    Log.i("frag1", "1 executed");
    return view;

    }



        }

我的mainActivity类代码是:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    Fragment1 frag1 = new Fragment1();
    Fragment2 frag2 = new Fragment2();
    transaction.add(R.id.mainactivityid, frag1, "1");
    transaction.add(R.id.mainactivityid, frag2, "2");
    transaction.commit();



}

2 个答案:

答案 0 :(得分:1)

试试这个

 list = (ListView) view.findViewById(R.id.listView1);

而不是

 list = (ListView) getActivity().findViewById(R.id.listView1);

您必须在ListView onCreateView(....)Fragement初始化您Viewinflated {{1}}

答案 1 :(得分:0)

使用片段视图而不是getactivity()。您的列表视图是片段xml布局,您可以使用片段视图来访问它。

list = (ListView) view.findViewById(R.id.listView1);

并在onActivityCreated()方法中设置适配器,此方法在onCreateView()之后调用,并且您将附加活动。