我的片段有问题。我需要多次显示一个片段,而不是创建它的新瞬间。我有一个用来改变活动内容的方法。
protected void setContentFragment(Fragment contentFragment) {
this.contentFragment = contentFragment;
setContentView(R.layout.content_frame);
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, contentFragment).commit();
getSlidingMenu().showContent();
}
content_frame是一个简单的布局。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
问题是:我创建第一个片段的瞬间并将其传递给setContentFragment(...)(仍然保持这一点)。然后使用其他Fragment调用setContentFragment。现在,我将第一个Fragment的瞬间传递给这个方法,它显示了银行屏幕。请帮帮我:(
答案 0 :(得分:0)
试试这个..
private void switchFragment(Fragment fragment) {
if (getActivity() == null)
return;
if (getActivity() instanceof MainActivity) {
DashboardActivity dashboard = (MainActivity) getActivity();
dashboard.switchFragment(fragment, "Main List");
}
}
答案 1 :(得分:0)
这样做
protected void setContentFragment(Fragment contentFragment) {
this.contentFragment = contentFragment;
Random random = new Random(100);
String rString = "myRandomString"+random.nextInt(); // Create a random string here everytime you call setContentFragment
setContentView(R.layout.content_frame);
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, contentFragment, rString).commit();
getSlidingMenu().showContent();
}
这将根据您的需要替换片段
答案 2 :(得分:0)
交换片段时,您需要分离/重新连接而不是替换它们。这留在记忆中。此外,您不需要再次setContentView,只需保留现有的FrameLayout(您也可以将android.R.id.content用于主要活动内容视图,而不是创建FrameLayout)
Fragment content1, content2;
Fragment current=content1;
public void onCreate() {
if(savedInstanceState==null)
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, content1)
.commit();
}
public void swap() {
if(current==content1) {
getSupportFragmentManager().beginTransaction()
.detach(content1)
.attach(android.R.id.content, content2)
.commit();
current=content2;
} else {
getSupportFragmentManager().beginTransaction()
.detach(content2)
.attach(android.R.id.content, content1)
.commit();
current=content1;
}
}