【问题标题】:java.lang.IllegalStateException: Fragment not attached to Activity in Androidjava.lang.IllegalStateException:片段未附加到 Android 中的 Activity
【发布时间】:2018-09-20 23:25:00
【问题描述】:

我正在开发一个应用程序,其中我的 Activity 中有多个 Fragments,但问题是有时在“BackPress”上我的应用程序崩溃并显示错误,即“java.lang.IllegalStateException: Fragment not attach to Activity in Android”。我的 logcat 将我重定向到 Toast

代码

catch (Exception e) {
    Toast.makeText(getActivity(), R.string.some_error_occured, Toast.LENGTH_LONG).show();
    e.printStackTrace();
}

我在 Toast 上做错了吗?

【问题讨论】:

    标签: android android-layout android-studio illegalstateexception android-toast


    【解决方案1】:

    如果您的片段中有 viewpager,那么您需要添加 viewpager 适配器。

     @Override
    public Parcelable saveState() {
        return null;
    }
    

    【讨论】:

      【解决方案2】:

      嘿,检查您是否附加到活动,然后进行与上下文相关的调用,例如您在 Toast 中执行的 getString。所以把你的代码移进去

      isAdded() : 如果片段当前被添加到它的 活动。

      if (isAdded()){
          //your code goes here
      } else {
          //handle the case
      }
      

      docs

      【讨论】:

        【解决方案3】:

        检查堆栈计数并删除所有活动片段,然后调用父类的 onBackPressed() 方法。

        override fun onBackPressed() {
            supportFragmentManager.beginTransaction().remove(fragment)
            super.onBackPressed()
        }
        

        【讨论】:

          【解决方案4】:

          它崩溃了,因为当您按下返回按钮时,您的活动未附加到视图,如果您想显示 toast 消息,那么您需要该活动的实例。 试试这个,检查片段是否附加到活动中

                     Activity activity = getActivity();
          
                     if(activity! = null && isAdded){
                       Toast.makeText(getActivity, "Show message", Toast.LENGTH_SHORT).show();
                     }
          

          【讨论】:

            猜你喜欢
            • 2015-04-24
            • 2012-06-10
            • 1970-01-01
            • 2011-10-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-26
            • 2023-04-04
            相关资源
            最近更新 更多