該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓
小白這幾天想做一個app,但是在做首頁的時候出現了問題,我按照網上的方法給首頁設定了一個主布局3個小布局
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CO2ATM4MjZ0MGNxEzN5czYllTMyIjYzEzMkNWY4QGMk9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
像這樣。原理是點選下面的按鈕會顯示對應的小布局。然後又設定了一個主活動,3個繼承自fargment的副活動,通過主函數中的邏輯來實作按鈕的響應。public class HomeActivity extends FragmentActivity implements View.OnClickListener {
private List imageUrl;
private List bannerTitle;
// 定義3個Fragment對象
private FirstFragment fg1;
private SecondFragment fg2;
private ThirdFragment fg3;
// 幀布局對象,用來存放Fragment對象
private FrameLayout frameLayout;
// 定義每個選項中的相關控件
private RelativeLayout firstLayout;
private RelativeLayout secondLayout;
private RelativeLayout thirdLayout;
public ImageView firstImage;
public ImageView secondImage;
public ImageView thirdImage;
private TextView firstText;
private TextView secondText;
private TextView thirdText;
// 定義幾個顔色
private int whirt = 0xFFFFFFFF;
private int gray = 0xFF7597B3;
private int dark = 0xff000000;
// 定義FragmentManager對象管理器
private FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
fragmentManager = getSupportFragmentManager();
initView(); // 初始化界面控件
setChioceItem(0); // 初始化頁面加載時顯示第一個頁籤
}
private void initView() {
// 初始化頁面标題欄
// 初始化底部導航欄的控件
firstImage = (ImageView) findViewById(R.id.first_image);
secondImage = (ImageView) findViewById(R.id.second_image);
thirdImage = (ImageView) findViewById(R.id.third_image);
firstText = (TextView) findViewById(R.id.first_text);
secondText = (TextView) findViewById(R.id.second_text);
thirdText = (TextView) findViewById(R.id.third_text);
firstLayout = (RelativeLayout) findViewById(R.id.first_layout);
secondLayout = (RelativeLayout) findViewById(R.id.second_layout);
thirdLayout = (RelativeLayout) findViewById(R.id.third_layout);
firstLayout.setOnClickListener(HomeActivity.this);
secondLayout.setOnClickListener(HomeActivity.this);
thirdLayout.setOnClickListener(HomeActivity.this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.first_layout:
setChioceItem(0);
break;
case R.id.second_layout:
setChioceItem(1);
break;
case R.id.third_layout:
setChioceItem(2);
break;
default:
break;
}
}
private void setChioceItem(int index) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
clearChioce(); // 清空, 重置選項, 隐藏所有Fragment
hideFragments(fragmentTransaction);
switch (index) {
case 0:
// firstImage.setImageResource(R.drawable.XXXX); 需要的話自行修改
firstText.setTextColor(dark);
firstLayout.setBackgroundColor(gray);
// 如果fg1為空,則建立一個并添加到界面上
if (fg1 == null) {
fg1 = new FirstFragment();
fragmentTransaction.add(R.id.content, fg1);
} else {
// 如果不為空,則直接将它顯示出來
fragmentTransaction.show(fg1);
}
break;
case 1:
//secondImage.setImageResource(R.drawable.XXXX);
secondText.setTextColor(dark);
secondLayout.setBackgroundColor(gray);
if (fg2 == null) {
fg2 = new SecondFragment();
fragmentTransaction.add(R.id.content, fg2);
} else {
fragmentTransaction.show(fg2);
}
break;
case 2:
// thirdImage.setImageResource(R.drawable.XXXX);
thirdText.setTextColor(dark);
thirdLayout.setBackgroundColor(gray);
if (fg3 == null) {
fg3 = new ThirdFragment();
fragmentTransaction.add(R.id.content, fg3);
} else {
fragmentTransaction.show(fg3);
}
break;
}
fragmentTransaction.commit(); // 送出
}
private void clearChioce() {
// firstImage.setImageResource(R.drawable.XXX);
firstText.setTextColor(gray);
firstLayout.setBackgroundColor(whirt);
// secondImage.setImageResource(R.drawable.XXX);
secondText.setTextColor(gray);
secondLayout.setBackgroundColor(whirt);
// thirdImage.setImageResource(R.drawable.XXX);
thirdText.setTextColor(gray);
thirdLayout.setBackgroundColor(whirt);
// fourthImage.setImageResource(R.drawable.XXX);
}
private void hideFragments(FragmentTransaction fragmentTransaction) {
if (fg1 != null) {
fragmentTransaction.hide(fg1);
}
if (fg2 != null) {
fragmentTransaction.hide(fg2);
}
if (fg3 != null) {
fragmentTransaction.hide(fg3);
}
}
}
這是主活動的代碼
public class FirstFragment extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fg1, container, false);
return view;
}
}
這是副活動的代碼,然後我想要在第一個布局中加入banner輪播效果,這時出現了問題。網上的代碼是這樣的
public class MainActivity extends AppCompatActivity {
private Banner banner;
private List imageUrl;
private List bannerTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
}
private void initData() {
//圖檔位址
imageUrl = new ArrayList<>();
imageUrl.add("
");
imageUrl.add("
");
imageUrl.add("
");
//Title名稱
bannerTitle = new ArrayList<>();
bannerTitle.add("一");
bannerTitle.add("二");
bannerTitle.add("三");
}
private void initView() {
banner = (Banner) findViewById(R.id.banner);
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
banner.setImageLoader(new GlideImageLoader());
banner.setImages(imageUrl);
banner.setBannerTitles(bannerTitle);
banner.setDelayTime(3000);
banner.start();
}
}
但是我那3個副活動是繼承fragment的。。網上的代碼就不相容了,是以我想問一下怎麼在Fragment中實作banner效果!