Java 碎片从屏幕上消失

Java 碎片从屏幕上消失,java,android,fragment,orientation,Java,Android,Fragment,Orientation,我有活动,有两个片段FragmentSurahDetail和FragmentTafsir碎片TAFSIR。如果添加了FragmentTafsir并要更改方向,FragmentTafsir将从屏幕上消失。知道怎么修吗 这是我的密码: public class ActivitySurahDetail extends AppCompatActivity implements FragmentSurahDetail.SurahListener { Toolbar toolbar; fin

我有活动,有两个片段<代码>FragmentSurahDetail和
FragmentTafsir
<当事件“OnOpenTafsir”时,添加代码>碎片TAFSIR。如果添加了
FragmentTafsir
并要更改方向,
FragmentTafsir
将从屏幕上消失。知道怎么修吗

这是我的密码:

public class ActivitySurahDetail extends AppCompatActivity implements FragmentSurahDetail.SurahListener {
    Toolbar toolbar;
    final String LOG_TAG = "ASD Tag";
    private static final String TAFSIR_FRAGMENT_TAG = "tafsir_fragment";
    private static final String SURAH_DETAIL_TAG = "surah_fragment";
    int surah_id;
    FragmentTafsir fragmentTafsir;
    private boolean favoriteMode;
    FragmentTransaction fragmentTransaction;
    FragmentSurahDetail fragmentSurahDetail;

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                super.onBackPressed();
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.surah_detail_activity);
        Bundle extras = getIntent().getExtras();
        surah_id = extras.getInt("item_id");
        favoriteMode = extras.getBoolean("favoriteMode", false);
        fragmentSurahDetail = new FragmentSurahDetail();
        Bundle args = new Bundle();
        args.putBoolean("favoriteMode", true);
        args.putInt("item_id", surah_id);
        fragmentSurahDetail.setArguments(args);
        getSupportFragmentManager().beginTransaction().replace(R.id.surah_detail_container, fragmentSurahDetail, SURAH_DETAIL_TAG).commit();
        // Show the Up button in the action bar.
        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    }


    @Override
    public void onOpenTafsir(int surah, int ayah) {
        fragmentTafsir = new FragmentTafsir();
        fragmentTransaction = getSupportFragmentManager().beginTransaction();
        Bundle extras = new Bundle();
        extras.putInt("surah", surah);
        extras.putInt("ayah", ayah);
        fragmentTafsir.setArguments(extras);
        fragmentTransaction.addToBackStack(TAFSIR_FRAGMENT_TAG);
        fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        fragmentTransaction.replace(R.id.surah_detail_container, fragmentTafsir, TAFSIR_FRAGMENT_TAG).commit();
    }
}

解决了。我刚加了一行

if (getSupportFragmentManager().findFragmentByTag(SURAH_DETAIL_TAG) == null){
            getSupportFragmentManager().beginTransaction().replace(R.id.surah_detail_container, fragmentSurahDetail, SURAH_DETAIL_TAG).commit();
        }

解决了。我刚加了一行

if (getSupportFragmentManager().findFragmentByTag(SURAH_DETAIL_TAG) == null){
            getSupportFragmentManager().beginTransaction().replace(R.id.surah_detail_container, fragmentSurahDetail, SURAH_DETAIL_TAG).commit();
        }

在片段中使用
setRetainInstance(true)
。这是官方文件:

在片段中使用
setRetainInstance(true)
。这是官方文件: