我希望我的应用在用户切换设置中的切换后发出通知。设置页面是静态的,所以我不能在这里使用showNotification()。有没有办法建立像这样的通知?
public static class MainPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_main);
final SwitchPreference notiswitch = (SwitchPreference) findPreference(getString(R.string.settings_notification_key));
notiswitch.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if(!((Boolean) newValue)) { //default false
Toast.makeText(getActivity(), "OFF",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "ON",
Toast.LENGTH_SHORT).show();
//TODO make notification
showNotification();//error here
}
return true;
}
});
}
}
public void showNotification() {
答案 0 :(得分:3)
看起来你将libraryDependencies += "com.github.sarxos" % "webcam-capture-driver-ipcam" % "0.3.10-RC7"
resolvers += Resolver.url("SarXos Repository", url("http://www.sarxos.pl/repo/maven2"))
作为包含MainPreferenceFragment
方法的活动类内的静态内部类,并作为片段的主机。
我的建议是使用showNotification()
通信的经典方法 - 通过转换片段的托管活动到所需的界面,并从中调用适当的方法。
例如:
在单独的文件中创建一个新界面:
activity-fragment
然后创建负责显示实现接口的片段的活动,并覆盖public interface NotificationView{
void showNotification();
}
方法。
之后,将showNotification
类添加到私有字段MainPreferenceFragment
并以这种方式初始化它:
NotificationView callback;
现在,您可以在片段中的所需位置拨打@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceOf NotificationView){
callback = (NotificationView) activity;
}
}
。但是,如果您将片段与其他活动一起使用,请不要忘记在callback.showNotification();
之前检查回调。
希望它会有所帮助!