我无法替换碎片。 我的操作栏在顶部,我的片段被框架布局覆盖。这是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;
}
我尝试在没有框架布局的情况下替换它,我尝试了很多事情,但是复制问题没有解决。任何帮助,将不胜感激。 我搜索了很长时间,并对其进行了很多调试。这是一个复杂的代码,但我如上所述缩小了范围。请帮忙 !
答案 0 :(得分:0)
您应该尝试添加片段而不是替换
public void toNextFragment(int index) {
if (index == 1) {
manager.beginTransaction().add(R.id.frameLayout, frontFar).commit();
}
}
有关更多详细信息,请参阅此link