2012-02-03 162 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在發生碎片的情況下。找出這個想法。這可以幫助你更多。我以這種方式做了一些事情。