我的應用程序被分成片段,每個片段都有自己的佈局(.xml文件)。片段和視圖
當我開始可視化我的活動的onCreate()
方法中的第一個片段時,我用setContentView(fragment_first)
設置了適當的佈局。如何更改,例如,第二個片段(fragment_second)中包含的TextView
?
我的應用程序被分成片段,每個片段都有自己的佈局(.xml文件)。片段和視圖
當我開始可視化我的活動的onCreate()
方法中的第一個片段時,我用setContentView(fragment_first)
設置了適當的佈局。如何更改,例如,第二個片段(fragment_second)中包含的TextView
?
一般來說,Fragment
或任何Activity
或就應該更新自己的內部UI控件。這很容易,而且設計很好。其他類/事件可能會更新Fragment
數據的狀態,但它會處理該狀態的顯示方式。
編輯回答評論問題:
這是如何在片段加載內容視圖:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.pump_info, container, false);
return view;
}
看來你設置你打算在你的活動你的第一個片段的XML文件。 你應該做的總之是創建一個全新的類,並將其擴展爲android.support.v4.app.Fragment
,也讓你的活動擴展FragmentActivity而不僅僅是Activity。
然後在您android.support.v4.app.Fragment
類(我從現在開始打電話給你的片段),你應該重寫onCreateView(LayoutInflater inflate, ViewGroup container, Bundle savedInstanceState){}
方法,在這種方法中,你應該把這樣一行: View view = inflater.inflate(R.layout.the_xml_layout_for_this_fragment, container, false);
其膨脹的片段和植物它的佈局在你活動佈局的適當位置。
在此之後,您需要return view;
,但在返回此視圖之前,您可以執行view.findViewById(R.id.id_of_a_view_from_the_xml_layout_file);
以查找元素並對其進行操作。
您應該爲您的應用中需要的每個片段創建一個這樣的片段類,讓它膨脹自己的xml佈局文件。
有關更詳細的說明,您可以看到http://www.youtube.com/watch?v=4BKlST82Dtg或其他視頻或書面教程。
編輯:這是一個基本的片段類:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MyFrag extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// inflate the view:
View view = inflater.inflate(R.layout.myfrag_layout, container, false);
// manipulate widgets, for example:
TextView textView = (TextView) view.findViewById(R.id.textView);
textView.setText("read me!!!");
// return the view:
return view;
}
}
,它的育兒活動:
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
public class MyFragmentActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// notice that there is a different layout file for the activity and for
// the fragment!
setContentView(R.layout.xml_layout_for_the_activity);
// to start the fragment and stick it into your activity (not needed if
// you use ViewPager)
FragmentManager fragMan = getSupportFragmentManager();
fragMan.beginTransaction()
.add(R.id.the_visual_element_that_will_contain_your_fragments_layout, fragMan)
.commit();
}
}
順便說一句,你不必調用你的FragmentManager fragMan,我這樣做是因爲它很有趣。但我不會告訴你我是如何調用我的AssetManager的。 hehehe ... XP – 2013-01-18 19:21:11
在onCreateView()
方法,你應該分配所有的意見以後需要訪問到你的片段類的字段,像這樣,
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
view = inflater.inflate(R.layout.xxx, container, false);
this.aTextView = (TextView)view.findViewById(R.id.a_text_view);
this.anImageView = (ImageView)view.findViewById(R.id.an_image_view);
...
}
你可以th在執行片段的其他地方使用aTextView
等。
好的,我該如何爲該片段創建一個類並將其綁定,以便我可以在片段上加載該佈局? –
看到我上面的修改。 –
如果這個答案有幫助,你應該將其標記爲答案。如果在人們花時間幫助您時您不接受有效答案,人們將不願意在將來幫助您。 –