静态android中的showNotification()
我希望我的应用程序在用户在“设置”中切换开关后发出通知。设置页面是静态的,因此我无法在此处使用showNotification()。有没有办法建立这样的通知静态android中的showNotification(),android,static,notifications,Android,Static,Notifications,我希望我的应用程序在用户在“设置”中切换开关后发出通知。设置页面是静态的,因此我无法在此处使用showNotification()。有没有办法建立这样的通知 public static class MainPreferenceFragment extends PreferenceFragment { @Override public void onCreate(final Bundle savedInstanceState) {
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接口的活动中。如果执行了,则表示回调未初始化。isNotificationView callback=something代码>?先生,我想我现在就要成功了,但是callback.showNotification();有一个错误,表示回调可能尚未初始化。请确保您正在将片段添加到实现NotificationView接口的活动中。如果执行了,则表示回调未初始化。isNotificationView callback=something代码>??