Android:片段替换重复

时间:2018-12-13 04:51:45

标签: android android-fragments

我无法替换碎片。 我的操作栏在顶部,我的片段被框架布局覆盖。这是xml布局。

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FrontAccidentCamActivity">

<android.support.design.widget.AppBarLayout
    android:id="@+id/front_actionbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.v7.widget.Toolbar
        android:id="@+id/front_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize" />

</android.support.design.widget.AppBarLayout>

<FrameLayout
    android:id = "@+id/frameLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@id/front_actionbar"
    >

    <fragment
        android:id ="@+id/front_frags"
        android:name="acc_fragments.FrontClose"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

</FrameLayout>

这是我的活动和片段。

public class FrontAccidentCamActivity extends AppCompatActivity {


private Toolbar toolbar;

// Fragments
private FragmentManager manager;
private FrontClose frontClose;
private FrontFar frontFar;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_front_accident_cam);

    toolbar = findViewById(R.id.front_toolbar);
    toolbar.setTitle("전방 사고 현장 도우미");

    setSupportActionBar(toolbar);

    // fragments casting
    manager = getSupportFragmentManager();

    frontClose= (FrontClose) manager.findFragmentById(R.id.front_frags); // index = 0

    frontFar = new FrontFar();              // index : 1



}

public void toNextFragment(int index) {
    if (index == 1) {
        manager.beginTransaction().replace(R.id.frameLayout, frontFar).commit();

    }
}

这是片段!

public class FrontClose extends Fragment  {

// my index = 0
Button btnNext0;
FrontAccidentCamActivity activity ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

    View view = inflater.inflate(R.layout.frag_front_close, container, false);

    (btnNext0 = view.findViewById(R.id.btnNext0)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            activity = (FrontAccidentCamActivity)getActivity();

            activity.toNextFragment(1);
        }
    });


    return view;
}

我尝试在没有框架布局的情况下替换它,我尝试了很多事情,但是复制问题没有解决。任何帮助,将不胜感激。 我搜索了很长时间,并对其进行了很多调试。这是一个复杂的代码,但我如上所述缩小了范围。请帮忙 !

1 个答案:

答案 0 :(得分:0)

您应该尝试添加片段而不是替换

public void toNextFragment(int index) {
    if (index == 1) {
        manager.beginTransaction().add(R.id.frameLayout, frontFar).commit();

    }
}

有关更多详细信息,请参阅此link