Я создаю приложение, которое переключается между фрагментами и действиями, используя навигационный ящик.
Я могу переключаться между операцией (которая содержит пустое представление или представление повторного окна) и фрагментами, используя навигационную панель, но когда я изменяю ориентацию, когда фрагмент загружен и операция скрыта от просмотра (пустое представление или представление повторного использования),макет действия будет перекрывать фрагмент при его восстановлении после изменения ориентации.Пустое / вторичное представление больше не скрыто.Я хотел бы, чтобы фрагмент оставался загруженным, а макет активности оставался скрытым после изменения ориентации.Я пробовал if (savedInstanceState == null)
, но это не сработало.
Вот мой код.Любая помощь будет оценена, чтобы помочь решить эту проблему.
public class DisplayActivity extends AppCompatActivity implements
LoaderManager.LoaderCallbacks<Cursor>,
NavigationView.OnNavigationItemSelectedListener,DefinitionFragment.OnFragmentInteractionListener,WeatherFragment.OnFragmentInteractionListener,PlanetFragment.OnFragmentInteractionListener{
private static final int ASTRONOMY_LOADER = 0;
private CustomCursorAdapter mAdapter;
RecyclerView mRecyclerView;
ViewGroup emptyView;
private Fragment fragment;
private FragmentTransaction fragmentTransaction;
private FloatingActionButton fab;
private static final String TAG = "Fragment";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (savedInstanceState == null){
fab.hide();
mRecyclerView.setVisibility(View.GONE);
emptyView.setVisibility(View.GONE);
}
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(DisplayActivity.this, EditorActivity.class);
startActivity(intent);
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
emptyView = findViewById(R.id.empty_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.addItemDecoration(new DividerItemDecoration(mRecyclerView.getContext(), DividerItemDecoration.VERTICAL));
//Setup an Adapter to create the recycler items for each row of prescription data in the Cursor.
//There is no prescription data yet (until the loader finishes) so pass in null for the Cursor.
mAdapter = new CustomCursorAdapter(this);
mRecyclerView.setAdapter(mAdapter);
//Kick off the loader
getLoaderManager().initLoader(ASTRONOMY_LOADER, null, this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_display, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// User clicked on a menu option in the app bar overflow menu
switch (item.getItemId()) {
// Respond to a click on the "Delete all entries" menu option
case R.id.action_delete_all_entries:
deleteAllCalculations();
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (id == R.id.astronomyCalculations) {
if(fragment!=null) {
fragmentTransaction.remove(getSupportFragmentManager().findFragmentById(R.id.frame_layout));
fragmentTransaction.commit();
fab.show();
if (mAdapter.getItemCount() == 0) {
mRecyclerView.setVisibility(View.GONE);
emptyView.setVisibility(View.VISIBLE);
} else {
mRecyclerView.setVisibility(View.VISIBLE);
emptyView.setVisibility(View.GONE);
}
}
} else if (id == R.id.definition) {
// Handle the definition fragment
fragment = new DefinitionFragment();
if (fragment != null) {
fragmentTransaction.replace(R.id.frame_layout, fragment);
fragmentTransaction.commit();
fab.hide();
mRecyclerView.setVisibility(View.GONE);
emptyView.setVisibility(View.GONE);
}
}