Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在方向更改时停止重叠碎片?_Android_Android Fragments_Screen Orientation_Fragmentmanager - Fatal编程技术网

Android 如何在方向更改时停止重叠碎片?

Android 如何在方向更改时停止重叠碎片?,android,android-fragments,screen-orientation,fragmentmanager,Android,Android Fragments,Screen Orientation,Fragmentmanager,我有一个应用程序,它使用片段来显示数据。下面显示的主要活动控制内部有一个recyclerview的片段,当我改变方向时,我会看到一个recyclerview与另一个重叠。在每次方向改变时,都会创建另一个片段。我该如何解决这个问题?任何帮助都会很好 public class MainActivity extends AppCompatActivity implements NotesFragment.OnFragmentInteractionListener, EditFragme

我有一个应用程序,它使用片段来显示数据。下面显示的主要活动控制内部有一个recyclerview的片段,当我改变方向时,我会看到一个recyclerview与另一个重叠。在每次方向改变时,都会创建另一个片段。我该如何解决这个问题?任何帮助都会很好

public class MainActivity extends AppCompatActivity
        implements NotesFragment.OnFragmentInteractionListener, EditFragment.SaveFragmentItem {

    EditFragment editFrag;
    NotesFragment notesFrag;

    FragmentManager fragmentManager;
    FragmentTransaction fragmentTransaction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        notesFrag = new NotesFragment();
        editFrag = new EditFragment();

        fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.container1, notesFrag);
        fragmentTransaction.commit();

    }

   ....
}

我知道发生了什么。这是一行令人不快的代码:

    fragmentTransaction.add(R.id.container1, notesFrag);

我需要使用
replace()
方法,在每次方向更改后替换片段,而不是将片段的另一个实例添加到FragmentManager。答案很简单,但令人沮丧;)

您还可以使用add函数向xml添加背景色,这样就不会显示以前的布局