X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/6496b9200d7574cde934b9b7ee0246efba3e8062..2a95f59adc2bdd8f8a90cab8fd8d28f90bf9fc68:/src/com/owncloud/android/ui/activity/FileDisplayActivity.java diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index b6a34eff..d87aabd4 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -140,11 +140,15 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements private OCFile mWaitingToPreview; private Handler mHandler; + + private Configuration mNewConfigurationChangeToApplyOnStart; + private boolean mStarted; @Override public void onCreate(Bundle savedInstanceState) { Log_OC.d(getClass().toString(), "onCreate() start"); super.onCreate(savedInstanceState); + mStarted = false; /// Load of parameters from received intent Account account = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_ACCOUNT); @@ -228,24 +232,10 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements @Override public void onConfigurationChanged (Configuration newConfig) { super.onConfigurationChanged(newConfig); - - FileFragment fragment = (FileFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG); - if (fragment != null - && fragment.getFile() != null - && (newConfig.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE - && newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) { - - onFileClick(fragment.getFile(), true); - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.remove((Fragment)fragment); - transaction.commit(); - + if (mStarted) { + checkConfigurationChange(newConfig); } else { - finish(); - Intent intent = new Intent(this, FileDisplayActivity.class); - intent .putExtra(FileDetailFragment.EXTRA_FILE, mCurrentDir); - intent .putExtra(FileDetailFragment.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); - startActivity(intent); + mNewConfigurationChangeToApplyOnStart = newConfig; } } @@ -319,6 +309,45 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements @Override + public void onStart() { + super.onStart(); + if (mNewConfigurationChangeToApplyOnStart != null) { + checkConfigurationChange(mNewConfigurationChangeToApplyOnStart); + mNewConfigurationChangeToApplyOnStart = null; + } + mStarted = true; + } + + @Override + public void onStop() { + super.onStop(); + mStarted = false; + } + + + private void checkConfigurationChange(Configuration newConfig) { + FileFragment fragment = (FileFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG); + if (fragment != null + && fragment.getFile() != null + && (newConfig.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE + && newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) { + + onFileClick(fragment.getFile(), true); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.remove((Fragment)fragment); + transaction.commit(); + + } else { + finish(); + Intent intent = new Intent(this, FileDisplayActivity.class); + intent.putExtra(FileDetailFragment.EXTRA_FILE, mCurrentDir); + intent.putExtra(FileDetailFragment.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); + startActivity(intent); + } + } + + + @Override public void onDestroy() { super.onDestroy(); if (mDownloadConnection != null) @@ -398,6 +427,7 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements * Called, when the user selected something for uploading */ public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); if (requestCode == ACTION_SELECT_CONTENT_FROM_APPS && (resultCode == RESULT_OK || resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)) { requestSimpleUpload(data, resultCode);