我想从第一个片段中的按钮打开第二个片段。 这是我的主要活动:
public class MainActivity extends AppCompatActivity implements CategoryFragment.OnListFragmentInteractionListener {
MainActivityFragment mainActivityFragment;
CategoryFragment categoryFragment;
FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainActivityFragment = new MainActivityFragment();
categoryFragment = new CategoryFragment();
manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.container_for_fragments,mainActivityFragment,"main_activity");
transaction.commit();
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container_for_fragments, categoryFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
}
@Override
public void onListFragmentInteraction(DummyContent.DummyItem item) {
Toast.makeText(this, String.valueOf(item.content), Toast.LENGTH_SHORT).show();
}
}
及其xml:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>
此XML包含主要片段的容器布局。 当第二个片段开始播放时,第一个片段仍然可见。 这是第二个:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@android:color/white"
android:layout_height="match_parent"
android:id="@+id/category_fragment"
android:orientation="horizontal">
<TextView
android:id="@+id/item_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin"
android:textAppearance="?attr/textAppearanceListItem" />
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin"
android:textAppearance="?attr/textAppearanceListItem" />
</LinearLayout>
我已经检查了有关该主题的其他主题,他们建议使用replace()
,但该主题无效。他们还建议使用纯色作为背景,但这也不起作用。我已经读到,有可能不在XML中添加include
而是以编程方式添加。没有设法做到这一点,因为我无法实现它。这是问题还是我做错了其他事情?
编辑:添加content_main.xml
。这是“ container_for_fragments”:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container_for_fragments"
android:name="com.example.fixxxer.zapperapp.MainActivityFragment"
android:layout_width="match_parent"
android:background="@android:color/white"
android:layout_height="match_parent" />
所有这些代码均来自android基本活动。我所做的唯一更改是以编程方式添加了MainActivityFragment
。