2017-03-03 31 views
0

View片段變量可以用這種方式在onCreateView方法中初始化。這裏的TextView位於片段內。Android(片段) - 建議在onActivityCreated方法內初始化視圖對象嗎?

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragmant_two,container,false); 
    if(savedInstanceState == null) 
    { 

    } 
    else 
    { 
     String data = savedInstanceState.getString("data"); 
     TextView myText = (TextView)view.findViewById(R.id.text_view); 
     myText.setText(data); 
    } 


    return view; 


} 

但是我發現在這種方式下在onActivityCreated裏面初始化了一個視圖。

textView = (TextView) getActivity().findViewById(R.id.text_view); 

沒有任何理由,我應該選擇onActivityCreated超過onCreateView

回答

1

onCreateView():您可以指定您的視圖變量並在此處執行任何圖形化初始化。

onActivityCreated():它在onCreateView()之後調用,主要用於最終初始化(例如,修改UI元素)。

0

很明顯,onActivityCreated被使用,因爲在Activity上找到視圖。

雖然你也可以使用onAttach。

個人,onViewCreated是我把我的片段視圖初始化

+0

我編輯了我的問題。實際上,這個觀點不是來自Activity,而是來自片段。所以,從你的意見應該使用'onCreateView'初始化'view'(這裏是'textView')嗎? – Utshaw

+0

如果是在Fragment中,那麼你不應該使用'getActivity()。findViewById' –

-1

你可以參考這個問題更多地瞭解onActivityCreated和onCreateView here

的onCreate():

的片段的onCreate()方法在Activity的 onAttachFragment()之後但在片段的onCreateView()之前調用。在此 方法中,您可以分配變量,獲取意圖附加項以及其他不涉及視圖層次結構(即非圖形化 初始化)的其他任何 。這是因爲可以在活動的onCreate()未完成時調用此方法,因此嘗試訪問此處的View層次結構可能會導致崩潰。

onCreateView():

在之後的onCreate()被調用(在片段),片段的 onCreateView()被調用。您可以分配您的視圖變量並執行任何圖形化初始化。您需要返回一個來自 這個方法的視圖,並且這是主UI視圖,但是如果您的片段不使用任何佈局或圖形,則可以返回null(如果不覆蓋,則會發生 默認值)。

onActivityCreated():

在命名狀態,這是活動的onCreate()有 完成後調用。它在onCreateView()之後調用,主要用於最終初始化(例如,修改UI元素) 。

0
textView = (TextView) getActivity().findViewById(R.id.text_view); 

這將嘗試從活動的佈局,而不是你的片段找到ID R.id.text_view的看法。如果帶有該ID的視圖存在於您的片段本身中,則應在片段中使用onCreateView方法。

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragmant_two,container,false); 
    TextView textView = (TextView) view.findViewById(R.id.text_view); 
    // bind your data here. 
    return view; 
} 
相關問題