こんにちは、2 つのタブを表示するアクション バー ナビゲーション画面を開発しようとしています。onTabselected リスナーでフラグメントをアクティブにしています。しかし、fragementtransaction.commit() を呼び出すまで、変更は反映されません。つまり、一度しか機能しません。つまり、tab2 に切り替えて、再び tab1 に戻ると、フラグメントは更新されません。tab2 に切り替えると、tab2 の内容は次のようになります。 tab1 の上に描画され、重なっているように見えます。私のコードをここに投稿しています。この問題の解決を手伝ってください。
これが私のクラスです:
public class ContentActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle arg0) {
this.requestWindowFeature(Window.FEATURE_ACTION_BAR);
// this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
// WindowManager.LayoutParams.FLAG_DIM_BEHIND);
//this.getWindow().setDimAmount((float) 30.0);
LayoutParams params = this.getWindow().getAttributes();
params.height = LayoutParams.WRAP_CONTENT; //fixed height
params.width = LayoutParams.MATCH_PARENT; //fixed width
this.getWindow().setGravity(Gravity.START);
this.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
super.onCreate(arg0);
setContentView(R.layout.layout_content);
ActionBar actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab BookMarkTab = actionbar.newTab().setText("BookMarks");
ActionBar.Tab NotesTab = actionbar.newTab().setText("Notes");
// Fragment bookMarkFragment = new BookMarkFragment();
//Fragment notesFragment = new NotesFragment();
BookMarkTab.setTabListener(new ContentTabListner(BookMarkFragment.class,"BookMarks"));
NotesTab.setTabListener(new ContentTabListner(NotesFragment.class,"Notes"));
actionbar.addTab(BookMarkTab);
actionbar.addTab(NotesTab);
}
class ContentTabListner implements ActionBar.TabListener {
private Fragment fragment;
private Class mclz;
private String mTag;
android.support.v4.app.FragmentTransaction fft = ContentActivity.this
.getSupportFragmentManager().beginTransaction();
public ContentTabListner(Class clazz,String tag) {
mclz = clazz;
mTag = tag;
fragment = ContentActivity.this.getSupportFragmentManager().findFragmentByTag(mTag);
if (fragment != null && !fragment.isDetached()) {
android.support.v4.app.FragmentTransaction ft = ContentActivity.this.getSupportFragmentManager().beginTransaction();
ft.detach(fragment);
ft.commit();
}
}
@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
if(fragment == null){
fragment = Fragment.instantiate(ContentActivity.this, mclz.getName(),null);
fft.add(android.R.id.content,fragment, mTag);
fft.commit();
}else{
fft.attach(fragment);
}
}
@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
if(fragment != null){
fft.detach(fragment);
}
}
}
}