调用 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 是否为空
我正在尝试使用计时器更新 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
.