【发布时间】:2015-08-15 10:30:27
【问题描述】:
我有一个包含 3 个选项卡按钮的活动,每个按钮都会将自己的片段带入屏幕。其中一个片段有一个音乐播放器和图像按钮,当我单击它们时它们会改变它们的图标。 (例如播放按钮将可绘制更改为暂停)
问题是,当我单击此播放图像按钮并更改选项卡并使用音乐播放器返回选项卡时,图像按钮会重置。我认为 fragmentmanager.replace 方法创建了一个新的片段实例。我怎样才能避免这种情况。
这是我的代码 sn-p。
public class HomeActivity extends SlidingFragmentActivity {
private LocationTracker lt;
private ImageButton imgbTimeline, imgbProfile, imgbMusic;
private Fragment menufragment = new Plik_MenuFragment();
private Fragment timeline = new Plik_TimelineFragment();
private Fragment profile = new Plik_ProfileFragment();
private Fragment musicPlayer = new Plik_MusicPlayerFragment();
private ViewPager viewpager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
// inner slidemenu setting class executing.
setInitials();
// Fragment işleri
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.slidemenu_container, menufragment);
ft.add(R.id.homepage_container, profile);
ft.add(R.id.homepage_container, musicPlayer);
ft.add(R.id.homepage_container, timeline);
ft.commit();
OnClickListener ocl = new OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager()
.beginTransaction();
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.imgbTimeline :
ft.replace(R.id.homepage_container, timeline);
ft.addToBackStack(null);
imgbTimeline.setBackgroundColor(Color.BLACK);
imgbProfile.setBackgroundColor(Color.GRAY);
imgbMusic.setBackgroundColor(Color.GRAY);
break;
case R.id.imgbProfile :
ft.replace(R.id.homepage_container, profile);
ft.addToBackStack(null);
imgbTimeline.setBackgroundColor(Color.GRAY);
imgbProfile.setBackgroundColor(Color.BLACK);
imgbMusic.setBackgroundColor(Color.GRAY);
break;
case R.id.imgbMusic :
ft.replace(R.id.homepage_container, musicPlayer);
ft.addToBackStack(null);
imgbTimeline.setBackgroundColor(Color.GRAY);
imgbProfile.setBackgroundColor(Color.GRAY);
imgbMusic.setBackgroundColor(Color.BLACK);
break;
default:
break;
}
ft.commit();
}
};
imgbTimeline.setOnClickListener(ocl);
imgbProfile.setOnClickListener(ocl);
imgbMusic.setOnClickListener(ocl);
【问题讨论】:
标签: android android-fragments fragment fragmentmanager