调用 getActivity().runOnUiThread 时出现 nullPointerException {Fragment 中的新 Runnable

nullPointerException on calling getActivity().runOnUiThread{new Runnable inside Fragment

我正在尝试使用计时器更新 PreferenceFragment 中的 ListPreference 摘要 当我在我的片段中时,一切都很好,但只要我按下后退按钮,我的应用程序就会崩溃,它会抛出一个空指针异常,提示 getActivity() 返回 null。 我还尝试通过仅在 getActivity() 不会 return null 但它不起作用时设置计时器来抑制它。

这是我的代码:

public class ButtonsFragment extends PreferenceFragmentCompat {

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    setPreferencesFromResource(R.xml.misc_option_settings, rootKey);
    
    if (getActivity() == null)
        return;
    
    new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    ListPreference rows = findPreference("btn_rows");
                    rows.setSummary("current button rows: " + rows.getValue());

                    ListPreference color = findPreference("btn_colors");
                    color.setSummary("current button color: " + color.getEntry());
                }
            });
        }
    }, 0, 100);
}

}

如能提供帮助,将不胜感激。

您应该在 run 方法中检查 activity 是否为空。在调用 getActivity().runOnUiThread.

之前检查 activity 是否为空