Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态android中的showNotification()_Android_Static_Notifications - Fatal编程技术网

静态android中的showNotification()

静态android中的showNotification(),android,static,notifications,Android,Static,Notifications,我希望我的应用程序在用户在“设置”中切换开关后发出通知。设置页面是静态的,因此我无法在此处使用showNotification()。有没有办法建立这样的通知 public static class MainPreferenceFragment extends PreferenceFragment { @Override public void onCreate(final Bundle savedInstanceState) {

我希望我的应用程序在用户在“设置”中切换开关后发出通知。设置页面是静态的,因此我无法在此处使用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() {

看起来您将
MainPreferenceFragment
设置为活动类中的静态内部类,该活动类包含
showNotification()
方法并充当片段的宿主

我的建议是使用一种经典的
活动片段
通信方法-通过铸造片段的托管活动到所需的接口,并从中调用适当的方法

例如:

在单独的文件中创建新接口:

public interface NotificationView{
    void showNotification();
}
然后让负责显示实现接口的片段的活动,并重写
showNotification
方法

之后,添加到
MainPreferenceFragment
class a私有字段
NotificationView回调并以以下方式初始化它:

@Override
public void onAttach(Activity activity) { 
    super.onAttach(activity);
    if (activity instanceOf NotificationView){
        callback = (NotificationView) activity;
    }
}
现在您可以调用
callback.showNotification()从片段中需要的位置开始。但是,在使用之前,不要忘记在
null
上检查callback,以防将片段用于其他活动


希望这会有帮助

看起来像是将
MainPreferenceFragment
作为活动类中的静态内部类,该活动类包含
showNotification()
方法,并充当片段的宿主

我的建议是使用一种经典的
活动片段
通信方法-通过铸造片段的托管活动到所需的接口,并从中调用适当的方法

例如:

在单独的文件中创建新接口:

public interface NotificationView{
    void showNotification();
}
然后让负责显示实现接口的片段的活动,并重写
showNotification
方法

之后,添加到
MainPreferenceFragment
class a私有字段
NotificationView回调并以以下方式初始化它:

@Override
public void onAttach(Activity activity) { 
    super.onAttach(activity);
    if (activity instanceOf NotificationView){
        callback = (NotificationView) activity;
    }
}
现在您可以调用
callback.showNotification()从片段中需要的位置开始。但是,在使用之前,不要忘记在
null
上检查callback,以防将片段用于其他活动


希望这会有帮助

您没有添加showNotification的代码。另外,请附上您的logcat.showNotification只是一个简单的通知。问题是第一个showNotification带有红色下划线,表示它是非静态的,无法引用。您没有添加showNotification的代码。另外,请附上您的logcat.showNotification只是一个简单的通知。问题是,第一个showNotification带有红色下划线,表示它是非静态的,无法引用。先生,我想我现在即将成功,但是callback.showNotification();有一个错误,表示回调可能尚未初始化。请确保您正在将片段添加到实现NotificationView接口的活动中。如果执行了,则表示回调未初始化。is
NotificationView callback=something?先生,我想我现在就要成功了,但是callback.showNotification();有一个错误,表示回调可能尚未初始化。请确保您正在将片段添加到实现NotificationView接口的活动中。如果执行了,则表示回调未初始化。is
NotificationView callback=something??