相关疑难解决方法(0)

java.lang.IllegalStateException:API 响应后片段未附加到上下文

在我的应用程序中,我有一个用于显示数据的片段,以及一个用于更改应用程序中某些设置的设置活动。当我通过导航抽屉进入设置活动,然后返回主屏幕(不更改设置)时,应用程序崩溃并出现以下异常:

java.lang.IllegalStateException: Fragment NowWeatherFragment{b7914f8 (0e67ee0d-8776-45b5-9fd7-ee69841c31d1)} not attached to a context

它似乎是在 API 调用的响应之后发生的,并且从关于 SO 的另一个答案中可以很好地解释原因,但是我尝试过的任何方法都无法解决这个问题。

我已经看到了其他几个关于此的问题,但是我无法将这些答案应用于我的情况。我尝试检查 isAttached() 并且没有帮助,并且对片段进行空检查,但它仍然得到相同的异常

不是发布所有类,其中一些很长,这里是 github repo。通过 Android Studio https://github.com/jollygreenegiant/SimpleWeather在设备上运行应该是相当轻量和容易的

我希望该应用程序会像启动时一样返回主屏幕并显示天气数据。

这是完整的堆栈跟踪:

java.lang.IllegalStateException: Fragment NowWeatherFragment{b7914f8 (0e67ee0d-8776-45b5-9fd7-ee69841c31d1)} not attached to a context.
        at androidx.fragment.app.Fragment.requireContext(Fragment.java:765)
        at androidx.fragment.app.Fragment.getResources(Fragment.java:829)
        at com.jggdevelopment.simpleweather.fragments.NowWeatherFragment.setupViews(NowWeatherFragment.java:82)
        at com.jggdevelopment.simpleweather.fragments.NowWeatherFragment$3.onSharedPreferenceChanged(NowWeatherFragment.java:152)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:612)
        at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:598)
        at com.jggdevelopment.simpleweather.fragments.MasterFragment.updateConditions(MasterFragment.java:263)
        at com.jggdevelopment.simpleweather.services.WeatherAPIUtils$2.onResponse(WeatherAPIUtils.java:92)
        at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$1.run(DefaultCallAdapterFactory.java:83)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7319)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
Run Code Online (Sandbox Code Playgroud)

java android android-fragments

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

我的片段未附加到主活动类.

根据我以前的经验,我试图列出一些自定义列表项BaseAdapter,使用values.xml中array定义的两个字符串string我的应用程序崩溃说我的片段没有附加活动.

MainActivity.java是:

public class MainActivity extends Activity {

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

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        MyListFragment myListFragment = new MyListFragment();
        fragmentTransaction.replace(android.R.id.content, myListFragment);
        fragmentTransaction.commit();

    }

}
Run Code Online (Sandbox Code Playgroud)

MyListFragment.java是:

public class MyListFragment extends ListFragment{

    MyCustomAdapter mAdapter;
    String[] title = getResources().getStringArray(R.array.list_items);
    String[] details = getResources().getStringArray(R.array.sub_list_items);

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.list_view, container,false); …
Run Code Online (Sandbox Code Playgroud)

android fragment android-listview android-fragments baseadapter

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