静态android中的showNotification()

时间:2017-09-04 17:33:56

标签: android static notifications

我希望我的应用在用户切换设置中的切换后发出通知。设置页面是静态的,所以我不能在这里使用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() {

1 个答案:

答案 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();之前检查回调。

希望它会有所帮助!