Я хотел бы знать, как узнать, что мой фрагмент (заставка) уже был показан, прежде чем переключить ориентацию на пейзаж. Я предполагаю, что после изменения ориентации действие уничтожается.Фрагмент - изменение ориентации
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//toolbar ...
showFragment(new SplashFragment());
}
public void showFragment(Fragment fragment) {
getSupportFragmentManager().beginTransaction().replace(R.id.main_frame_layout, fragment).addToBackStack("").commit();
}
@Override
//Menu item icons
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
Фрагмент (заставка)
общественного класса SplashFragment расширяет фрагмент {
public static SplashFragment newInstance() {
Bundle args = new Bundle();
SplashFragment fragment = new SplashFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_splash, container, false);
return view;
}
@Override
public void onViewCreated(View view, @Nullable final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
((MainActivity) getActivity()).getSupportActionBar().hide();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
((MainActivity) getActivity()).showFragment(ContactListFragment.newInstance());
}
}, 1000);
}
Вы можете добавить булев в комплект после того, как ваш обработчик был завершен для вашего SplashFragment. Поэтому, когда вызывается SplashFragment, saveInstanceState может проверить, истинно ли оно, а затем пропустить и показать ContactListFragment. Либо это, либо используйте SharedPreferences и сохраните там логическое значение и проверьте его из MainActivity и выполните if() else {} для showFragment (новый SplashFragment.newInstance()) или showFragment (newContactListFragment.newInstance()) –
Почему бы не реализовать splashscreen в качестве темы активности и избавиться от фрагмента всплывающего экрана, чтобы вы могли убедиться, что всплывающее окно отображается до ввода mainactivity? После этого вы получите ориентацию от конфигурации. Пожалуйста, определите результат, который вы хотите, чтобы портфолио заставки отображалось в ландшафтном приложении? –