2012-02-03 60 views
0

的回调方法一个列表时使用它扩展了ListActivity类,我可以象下面onCreate()方法填充列表:填充在片段

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES)); 

    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 

    lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     // When clicked, show a toast with the TextView text 
     Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
      Toast.LENGTH_SHORT).show(); 
    } 
    }); 
} 

但我想用片段代替活性,我想知道哪个片段的生命周期回调方法应该定义上面的东西?我可以直接复制上面的代码在片段回调中使用吗?

P.S. 片段生命周期回调为:onAttach(),onCreate(),onCreateView(),onActivityCreated(), onStart()等。我应该使用哪一个?

回答

0

请检查文件。碎片或多或少像活动。您仍然可以使用onCreate()方法。看看资源here

+0

是的,我知道片段就像活动,但它们总是不一样,我已经阅读过你提供的文档,我的问题是我应该在哪里定义片段。文件中未明确提及。 – 2012-02-03 15:58:10

+0

onCreate()本身! :) – 2012-02-03 15:59:24

+0

谢谢。此外,ListFragment已经有onListItemClick()回调,我想我不需要我的片段的onCreate()中的lv.setOnItemClickListener(),对吧?相反,我应该将此代码移动到FragmentList的onListItemClick()回调中,对吗? – 2012-02-03 16:02:13

0

如果你使用ListFragment,那么你会在onCreate()中做同样的事情,在最简单的情况下,你不需要在onCreateView()中做任何事情,因为该方法返回容器的所有行你的列表里面。

+0

你的意思是我可以直接从activity中复制onCreate()中的代码,并直接在我的ListFragment中使用它,对吧?但是ListFragment已经有了onListItemClick()回调,我想我的片段的onCreate()中不需要lv.setOnItemClickListener(),对吗? – 2012-02-03 15:59:16

+0

正确。现在你有一个匿名的类覆盖了OnItemClickListener类的onItemClick()方法,你可以将该部分去掉并将该行为添加到onListItemClick方法中。因此,基本上只需将该代码拉出并重写onListItemClick()方法即可显示Toast对象 – 2012-02-03 16:40:59

0

你可以尝试在onResume()方法中使用你的listview在发生碎片的情况下。找出这个想法。这可以帮助你更多。我以这种方式做了一些事情。