2014-12-29 110 views
0

您好,我正在爲完全基於碎片的android製作應用程序。 它有一個菜單,並點擊任何項目打開根據選項的片段。 我很困惑如何把代碼的類fragment.I的片段閱讀這裏後,在溶液中提供像這樣的代碼片段:如何處理Android碎片的代碼

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_library, container, false); 
    return rootView; 
} 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // do your variables initialisations here except Views!!! 



} 
public void onViewCreated(View view, Bundle savedInstanceState){ 
     super.onViewCreated(view, savedInstanceState); 
     libraryHeading=(TextView)getView().findViewById(R.id.Library); 

     libraryHeading.setText("Hey I am Library"); 

     // initialise your views 

} 

現在onViewCreated()我會初始化視圖,在onCreate()我會初始化我的變量,但我沒有得到我會做什麼onCreateView()? 請幫助我。我是新的android開發。如果我​​做錯了,請告訴我。

+0

而不是從S.O.複製代碼,您最好在遵循教程以更充分地看到您的問題需要什麼。你已經實例化了一個「片段」,這是一個開始。 - [這裏有一個很好的Android開發指南來了解片段如何工作](http://developer.android.com/guide/components/fragments.html) - [這是一個非常符合你的陳述目標](http://www.vogella.com/tutorials/AndroidFragments/article.html) – CodeMonkey

回答

2

我不太清楚你跟隨的是什麼指南。

在我的應用程序,我做的所有視圖初始化的onCreateView()方法。所以像這樣:

TextView sampleTextView; 
ImageView sampleImageView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_xml_layout, container, false); 

    sampleTextView = rootView.findViewById(R.id.sampleTextView); 
    sampleImageView = rootView.findViewById(R.id.sampleImageView); 

    sampleTextView.setText("You can do all initialization here..."); 

    sampleImageView.setBackground(Color.WHITE); 

    return rootView; 
} 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // do your variables initializations here except Views 
} 

你可以忘記整個onViewCreated()的事情,至少現在。按照上面的方法使用onCreateView()方法。

+0

爲什麼onCreate()here.Can我也刪除了這個? http://stackoverflow.com/questions/17901727/android-add-code-to-a-fragment/27679176#27679176 –

+0

請檢查鏈接。 –

+1

理論上,是的。如果需要,你可以在'onCreateView()'中完成所有的變量初始化。我會在'onCreate()'中執行它們,因爲這是執行它的常用方法 - 一致性非常重要。 –

0

好的非常感謝你much.I瞭解it.It發生的一切,由於這一行:

libraryHeading=(TextView)getView().findViewById(R.id.Library); 

我應該使用rootView代替getView()方法

0

按照文檔

public void onViewCreated (View view, Bundle savedInstanceState) 


Called immediately after onCreateView(LayoutInflater, ViewGroup, Bundle) has returned, but before any saved state has been restored in to the view. This gives subclasses a chance to initialize themselves once they know their view hierarchy has been completely created. The fragment's view hierarchy is not however attached to its parent at this point. 

如果您正在訪問父活動的視圖層次,那麼你必須做它在onActivityCreated,之前不是。