標籤:
介面布局,線性布局,水平排列,平均置中分布
四個TextView,寬度為0dip,權重都是1,內容置中顯示
主體內容部分使用LinearLayout控制項,設定id
建立四個Fragment選項類,繼承系統的Fragment類
重寫onCreateView()方法,返回一個View對象
建立四個布局檔案,顯示選項卡對應的內容
在activity中
擷取LinearLayout對象,通過findViewById()方法
先找到四個TextView控制項對象
調用四個TextView對象的setOnClickListener()方法,設定點擊事件,參數:this
當前activity實現OnClickLisntenr介面,實現onClick()方法,傳遞進去View對象
設定預設介面
擷取FragmentManager對象,通過getFragmentManager()方法
調用FragmentManager對象的beginTransaction()方法,開啟事務,獲得FragmentTransaction對象
調用FragmentTransaction對象的replace()方法,用Fragment替換當前介面,參數:containerViewId,第一個Fragment對象
containerViewId是容器的id,就是我們定義的內容主體的id
調用FragmentTransaction對象的commit()方法,提交事務
在onClick()方法裡面
調用View對象的getId()方法,擷取到當前點擊的控制項的id
switch判斷一下id,根據不同的id展示不同的fragment
FragmentTransaction對象的replace()方法裡面,參數1必須是個容器物件,我用TextView報類型轉換異常,LinearLayout控制項下面必須有一個子控制項
當前沒有動畫效果
package com.tsh.mytabfrag;import android.app.Activity;import android.app.Fragment;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener { private TextView tv1, tv2, tv3; private FragmentManager fm; private FragmentTransaction ft; private Fragment fm1, fm2, fm3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化控制項 tv1 = (TextView) findViewById(R.id.tv1); tv2 = (TextView) findViewById(R.id.tv2); tv3 = (TextView) findViewById(R.id.tv3); fm1 = new Fragment1(); fm2 = new Fragment2(); fm3 = new Fragment3(); tv1.setOnClickListener(this); tv2.setOnClickListener(this); tv3.setOnClickListener(this); fm = getFragmentManager(); ft = fm.beginTransaction(); ft.replace(R.id.content, fm1); ft.commit(); } @Override public void onClick(View v) { ft = fm.beginTransaction(); switch (v.getId()) { case R.id.tv1: ft.replace(R.id.content, fm1); break; case R.id.tv2: ft.replace(R.id.content, fm2); break; case R.id.tv3: ft.replace(R.id.content, fm3); break; default: break; } ft.commit(); }}
[android] 用fragment建立一個選項卡