mirror of
https://github.com/syncthing/syncthing-android.git
synced 2024-11-26 14:21:16 +00:00
Fix crash in MainActivity.onSaveInstanceState()
This commit is contained in:
parent
bdec750b34
commit
8e1dfe875e
1 changed files with 21 additions and 16 deletions
|
@ -42,6 +42,7 @@ import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.annimon.stream.function.Consumer;
|
||||||
import com.nutomic.syncthingandroid.R;
|
import com.nutomic.syncthingandroid.R;
|
||||||
import com.nutomic.syncthingandroid.fragments.DeviceListFragment;
|
import com.nutomic.syncthingandroid.fragments.DeviceListFragment;
|
||||||
import com.nutomic.syncthingandroid.fragments.DrawerFragment;
|
import com.nutomic.syncthingandroid.fragments.DrawerFragment;
|
||||||
|
@ -272,24 +273,28 @@ public class MainActivity extends StateDialogActivity
|
||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(Bundle outState) {
|
protected void onSaveInstanceState(Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
// Avoid crash if called during startup.
|
|
||||||
if (mFolderListFragment != null && mDeviceListFragment != null && mDrawerFragment != null) {
|
FragmentManager fm = getSupportFragmentManager();
|
||||||
FragmentManager fm = getSupportFragmentManager();
|
Consumer<Fragment> putFragment = fragment -> {
|
||||||
fm.putFragment(outState, FolderListFragment.class.getName(), mFolderListFragment);
|
if (fragment != null && fragment.isAdded()) {
|
||||||
fm.putFragment(outState, DeviceListFragment.class.getName(), mDeviceListFragment);
|
fm.putFragment(outState, fragment.getClass().getName(), fragment);
|
||||||
fm.putFragment(outState, DrawerFragment.class.getName(), mDrawerFragment);
|
|
||||||
outState.putInt("currentTab", mViewPager.getCurrentItem());
|
|
||||||
outState.putBoolean(BATTERY_DIALOG_DISMISSED, mBatteryOptimizationsDialog == null || !mBatteryOptimizationsDialog.isShowing());
|
|
||||||
outState.putBoolean(IS_SHOWING_RESTART_DIALOG, mRestartDialog != null && mRestartDialog.isShowing());
|
|
||||||
if(mQrCodeDialog != null && mQrCodeDialog.isShowing()) {
|
|
||||||
outState.putBoolean(IS_QRCODE_DIALOG_DISPLAYED, true);
|
|
||||||
ImageView qrCode = mQrCodeDialog.findViewById(R.id.qrcode_image_view);
|
|
||||||
TextView deviceID = mQrCodeDialog.findViewById(R.id.device_id);
|
|
||||||
outState.putParcelable(QRCODE_BITMAP_KEY, ((BitmapDrawable) qrCode.getDrawable()).getBitmap());
|
|
||||||
outState.putString(DEVICEID_KEY, deviceID.getText().toString());
|
|
||||||
}
|
}
|
||||||
Util.dismissDialogSafe(mRestartDialog, this);
|
};
|
||||||
|
putFragment.accept(mFolderListFragment);
|
||||||
|
putFragment.accept(mDeviceListFragment);
|
||||||
|
putFragment.accept(mDrawerFragment);
|
||||||
|
|
||||||
|
outState.putInt("currentTab", mViewPager.getCurrentItem());
|
||||||
|
outState.putBoolean(BATTERY_DIALOG_DISMISSED, mBatteryOptimizationsDialog == null || !mBatteryOptimizationsDialog.isShowing());
|
||||||
|
outState.putBoolean(IS_SHOWING_RESTART_DIALOG, mRestartDialog != null && mRestartDialog.isShowing());
|
||||||
|
if(mQrCodeDialog != null && mQrCodeDialog.isShowing()) {
|
||||||
|
outState.putBoolean(IS_QRCODE_DIALOG_DISPLAYED, true);
|
||||||
|
ImageView qrCode = mQrCodeDialog.findViewById(R.id.qrcode_image_view);
|
||||||
|
TextView deviceID = mQrCodeDialog.findViewById(R.id.device_id);
|
||||||
|
outState.putParcelable(QRCODE_BITMAP_KEY, ((BitmapDrawable) qrCode.getDrawable()).getBitmap());
|
||||||
|
outState.putString(DEVICEID_KEY, deviceID.getText().toString());
|
||||||
}
|
}
|
||||||
|
Util.dismissDialogSafe(mRestartDialog, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue