1

我是Android編程的新手。 我使用ActionBarSherlock和NavigationTabs創建了我的應用風格谷歌商店的主要Activity,其中包含片段,每個片段引用另一個活動(片段1片段2等)以及每個片段膨脹佈局。在一個片段中自定義xml佈局 - Android

但是,我習慣於在xml中創建佈局,然後在java中對其進行自定義。根據一天中的時間,或者根據數據庫中的某些數據,給按鈕等賦予不同的文本。但在Fragment Class中,我甚至無法使用setContentView來處理每個文本或按鈕,並且設置使用我的數據庫的上下文是給我的問題。

如何在片段中自定義xml佈局? 或者什麼是正確的做法?

這裏我的片段:

public class Fragment1 extends SherlockFragment{ 


public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    return inflater.inflate(R.layout.menu, container, false); 

} 

回答

2

這更簡單了,然後您認爲。 onCreateView instanciate au返回您的片段的視圖。正如你所說,在一個簡單的活動中,您使用setContentView()設置(並instanciate)視圖,然後使用findViewById()獲取您的視圖。

findViewById()要求視圖返回所需的視圖項,您可以在返回它之前從視圖中調用它。像這樣:

public class Fragment1 extends SherlockFragment{ 

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    View v = inflater.inflate(R.layout.menu, container, false); 

    // For example, getting a TextView 
    TextView tv = (TextView) v.findViewById(R.id.myTextView); 
    // do your job 

    return v; 
} 
2

到目前爲止好,你只需要使用你正在膨脹得到一切的看法。

這裏有一個例子

View v = inflater.inflate(R.layout.menu, container, false); 

Button b = (Button)v.findViewById(r.id.button1); 

return v; 
2

onActivityCreated你可以使用:

View mView = getView(); 
TextView textView = (TextView) view.findViewById(R.id.theIdOfTextView); 

其中theIdOfTextViewR.layout.menu聲明的。

getView()返回View你膨脹在onCreateView裏面。只有在執行完onCreateView之後才能使用它

+0

Ty for your answer!它運作良好 –