標籤:
import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.View;import android.view.View.OnClickListener;import android.widget.FrameLayout;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;public class MainActivity extends FragmentActivity implements OnClickListener{ //定義3個Fragment的對象 private Fragment1 fg1; private Fragment2 fg2; private Fragment3 fg3; //幀布局對象,就是用來存放Fragment的容器 private FrameLayout flayout; //定義底部導覽列的三個布局 每個布局對應一個選項按鈕 private RelativeLayout course_layout; private RelativeLayout found_layout; private RelativeLayout settings_layout; //定義底部導覽列中的ImageView與TextView private ImageView course_image; private ImageView found_image; private ImageView settings_image; private TextView course_text; private TextView settings_text; private TextView found_text; //定義要用的顏色值 private int whirt = 0xFFFFFFFF; private int gray = 0xFF7597B3; private int blue =0xFF0AB2FB; //定義FragmentManager對象 FragmentManager fManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fManager = getSupportFragmentManager(); //擷取Manager以對fragment進行管理 initViews(); //初始化布局控制項 使代碼結構更為清晰 } //完成組件的初始化 public void initViews() { course_image = (ImageView) findViewById(R.id.course_image); found_image = (ImageView) findViewById(R.id.found_image); settings_image = (ImageView) findViewById(R.id.setting_image); course_text = (TextView) findViewById(R.id.course_text); found_text = (TextView) findViewById(R.id.found_text); settings_text = (TextView) findViewById(R.id.setting_text); course_layout = (RelativeLayout) findViewById(R.id.course_layout); found_layout = (RelativeLayout) findViewById(R.id.found_layout); settings_layout = (RelativeLayout) findViewById(R.id.setting_layout); course_layout.setOnClickListener(this); //綁定監聽器 found_layout.setOnClickListener(this); settings_layout.setOnClickListener(this); } //重寫onClick事件 @Override public void onClick(View view) { switch (view.getId()) { case R.id.course_layout: setChioceItem(0); break; case R.id.found_layout: setChioceItem(1); break; case R.id.setting_layout: setChioceItem(2); break; default: break; } } //定義一個選中一個item後的處理 public void setChioceItem(int index) { //重設選項+隱藏所有Fragment FragmentTransaction transaction = fManager.beginTransaction(); clearChioce(); //每次擷取響應事件後都要初始化整個布局 hideFragments(transaction); switch (index) { case 0: course_image.setImageResource(R.drawable.ic_tabbar_course_pressed); course_text.setTextColor(blue); if (fg1 == null) { // 如果fg1為空白,則建立一個並添加到介面上 這段代碼是用來初始化建立fragment fg1 = new Fragment1(); transaction.add(R.id.content, fg1); } else { // 如果MessageFragment不為空白,則直接將它顯示出來 transaction.show(fg1); } break; case 1: found_image.setImageResource(R.drawable.ic_tabbar_found_pressed); found_text.setTextColor(blue); if (fg2 == null) { // 如果fg1為空白,則建立一個並添加到介面上 fg2 = new Fragment2(); transaction.add(R.id.content, fg2); } else { // 如果MessageFragment不為空白,則直接將它顯示出來 transaction.show(fg2); } break; case 2: settings_image.setImageResource(R.drawable.ic_tabbar_settings_pressed); settings_text.setTextColor(blue); if (fg3 == null) { // 如果fg1為空白,則建立一個並添加到介面上 fg3 = new Fragment3(); transaction.add(R.id.content, fg3); } else { // 如果MessageFragment不為空白,則直接將它顯示出來 transaction.show(fg3); } break; } transaction.commit();//提交一個事務 } //隱藏所有的Fragment,避免fragment混亂 如果沒有隱藏的話 運行後結果會出先點擊前一個選項無法正確顯示相應的布局 private void hideFragments(FragmentTransaction transaction) { if (fg1 != null) { transaction.hide(fg1); } if (fg2 != null) { transaction.hide(fg2); } if (fg3 != null) { transaction.hide(fg3); } } //定義一個重設所有選項的方法 public void clearChioce() { course_image.setImageResource(R.drawable.ic_tabbar_course_normal); course_layout.setBackgroundColor(whirt); course_text.setTextColor(gray); found_image.setImageResource(R.drawable.ic_tabbar_found_normal); found_layout.setBackgroundColor(whirt); found_text.setTextColor(gray); settings_image.setImageResource(R.drawable.ic_tabbar_settings_normal); settings_layout.setBackgroundColor(whirt); settings_text.setTextColor(gray); }}
import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fg1, container,false); return view; }}
Android Fragment解析及UI底部導覽列執行個體