相关疑难解决方法(0)

Android ShowDialog:IllegalStateException:在onSaveInstanceState之后无法执行此操作

runOnUiThread()一个Activity中,我正在尝试显示ProgressDialog.

 FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
 ProgressDialogFragment mProgressDialogFragment = new ProgressDialogFragment();
 mProgressDialogFragment.show(fragmentTransaction, TAG);
Run Code Online (Sandbox Code Playgroud)

这里ProgressDialogFragment延伸DialogFragment.我已经在许多设备上测试了这个并没有发生任何崩溃.但是在Asus中,每当我显示对话框时,我都会经常遇到下面的崩溃.华硕的操作系统版本是4.4.2.

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
       at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1360)
       at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1378)
       at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
       at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
       at android.support.v4.app.DialogFragment.show(DialogFragment.java:155)
       at com.trimble.android.trimbleone.activity.ProgressDialogHandlerActivity.showProgressDialog(ProgressDialogHandlerActivity.java:72)
       at com.trimble.android.trimbleone.activity.UICallbackHandlerActivity$processThread$7.run(UICallbackHandlerActivity.java:222)
       at android.os.Handler.handleCallback(Handler.java:733)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:149)
       at android.app.ActivityThread.main(ActivityThread.java:5061)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
       at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)

android fragment showdialog illegalstateexception android-dialogfragment

3
推荐指数
1
解决办法
2918
查看次数

onRequestPermissionsResult()中的Android java.lang.IllegalStateException

我正在使用SD卡,所以试图在运行时获得许可.这是代码:

public class MainActivity extends AppCompatActivity implements FileListFragment.OnFragmentInteractionListener {

private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 111;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
        }

         ...................
         ................
    }

@Override
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    FileListFragment fileListFragment = FileListFragment.newInstance(0);  // **Error line** …
Run Code Online (Sandbox Code Playgroud)

permissions android illegalstateexception onsaveinstancestate

3
推荐指数
1
解决办法
2812
查看次数

IllegalStateException onSaveInstanceState 显示 DialogFragment 后无法执行此操作

这是我第一次遇到这个问题。

我已经仔细研究了 SO 上的几个答案,尤其是这个这个,但它没有解决我的问题,并且大多数答案不能用作解决我的案例的安全可靠的方法。

我已经尝试过:

  • 覆盖onSaveInstanceState并且不调用 super

但 commitAllowingStateLoss 不能用于第一种情况。

我正在寻找有关如何避免引发此异常以及如何实现引发异常的操作的解释(在第一种情况下,显示dialogFragment)。我已经知道如何引发此异常,但是,我不知道在我的情况下引发了什么。它在我的应用程序中出现两次:

第一个发生在一个非常简单的活动中,我有一个简单的动画,在该动画的末尾我显示了一个 DialogFragment (SplashActivity):

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val potentialLanguage = storage.getString(Constants.LANGUAGE)
    val lang = if (potentialLanguage.isNotEmpty()) {
        potentialLanguage
    } else {
        Locale.getDefault().language
    }
    val language = Language.getFromName(lang)!!
    val dm = res.displayMetrics
    val conf = res.configuration
    conf.setLocale(Locale(language))
    saveLanguage(context, lang)
    // Use conf.locale = new Locale(...) if targeting lower versions
    res.updateConfiguration(conf, dm)
    initWarningDialog()
    RevelyGradient
        .radial()
        .colors(
            intArrayOf(
                getColor(R.color.backgroundOnBoardingStart),
                getColor(R.color.backgroundOnBoardingEnd)
            )
        )
        .onBackgroundOf(root)
    ivCap.animate() …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle onsaveinstancestate

3
推荐指数
1
解决办法
1万
查看次数

Android ViewPager IllegalStateException:无法在onSaveInstanceState之后执行此操作

我正在使用兼容性库中的ViewPager.我从市场报告中经常得到这个例外.

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1242)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1253)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:535)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:519)
Run Code Online (Sandbox Code Playgroud)

什么可能导致它的想法?

android illegalstateexception android-fragments

1
推荐指数
1
解决办法
9265
查看次数

引起:java.lang.IllegalStateException:在onSaveInstanceState之后无法执行此操作

我正在尝试获取读取日历的权限,获取权限后我试图调用另一个片段.我遇到了以下异常.这只发生在应用程序的第一次启动时.对于下一个启动应用程序工作正常.

5488-5488/com.mindtree.calenderevents E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mindtree.calenderevents, PID: 5488
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=2, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.mindtree.calenderevents/com.mindtree.calenderevents.MainActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
   at android.app.ActivityThread.deliverResults(ActivityThread.java:4998)
   at android.app.ActivityThread.handleSendResult(ActivityThread.java:5041)
   at android.app.ActivityThread.access$1600(ActivityThread.java:229)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1875)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:7325)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
   at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1533)
   at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1551)
   at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:696)
   at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:662)
   at com.mindtree.calenderevents.MainActivity.onRequestPermissionsResult(MainActivity.java:59)
   at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7291)
   at android.app.Activity.dispatchActivityResult(Activity.java:7169)
   at …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-permissions

1
推荐指数
1
解决办法
1万
查看次数