ユーザーが設定の切り替えを切り替えた後に通知するようにします。設定ページは静的なので、ここではshowNotification()を使用することはできません。そのような通知を作成する方法はありますか?static androidの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() {
もしshowNotification()
方法を含み、断片のためのホストとして機能する活性クラス内の静的内部クラスとしてMainPreferenceFragment
したように見えます。
伝えたいのは、従来の手法のactivity-fragment
の通信を使用することです。これは、キャスティングフラグメントのホスティングアクティビティを使用して、必要なインターフェイスに適切なメソッドを呼び出すことです。例えば
:インタフェースを実装するフラグメントを示すための責任活動を行い、showNotification
メソッドをオーバーライドその後
public interface NotificationView{
void showNotification();
}
:
は別のファイルに新しいインターフェイスを作成します。その後
MainPreferenceFragment
クラスにプライベートフィールドNotificationView callback;
を追加し、この方法でそれを初期化します。
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceOf NotificationView){
callback = (NotificationView) activity;
}
}
そして今、あなたはあなたのフラグメント内の必要な場所からcallback.showNotification();
を呼び出すことができます。ただし、他のアクティビティでフラグメントを使用する場合は、コールバックをnull
にチェックすることを忘れないでください。
希望すると助かります!
先生、私は今成功しようとしていると思いますが、callback.showNotification();コールバックが初期化されていない可能性があります。 –
NotificationViewインターフェイス –
を実装しているアクティビティにフラグメントを追加していることを確認してください。コールバックが初期化されていません。 –
- 1. Androidスタジオ2.0のアップデート - public static volatile com.android.tools.fd.runtime.IncrementalChange
- 2. Rshinyのlong showNotificationで行を分割するには?
- 3. Android Static in OGG AudioをSoundPoolで使用
- 4. JNI Register static with static initializer
- 5. staticメソッドをstaticにできません
- 6. staticメソッド
- 7. 'static final byte'のスイッチケース
- 8. enumのstatic finalメソッド
- 9. phoenixのweb/staticとpriv/staticの違いは何ですか?
- 10. 別の "public static function"で "public static function"の変数を使用
- 11. androidでstatic変数とsharedpreferenceを使用する場合
- 12. Android onProgressUpdateはstaticメソッドしか呼び出せませんか?
- 13. Python Scoping/Static Misunderstanding
- 14. static getApplicationContext for SQLiteOpenHelper
- 15. ASP.Net MVC + static ConcurrentDictionary
- 16. Bing Streetside Static Image
- 17. Im a static fobic
- 18. static propType Vs React.PropTypes
- 19. Flask、CherryPy、static content
- 20. TypeScript extends String Static
- 21. facebook static fbml problem
- 22. C/C++ Static Voodoo
- 23. ExpressJS Static not working
- 24. pthread static linking
- 25. Sinatra Static Page
- 26. Typescript :: Abstract static
- 27. @Autowired with static variables
- 28. Django heroku static dir
- 29. JS public static pattern
- 30. staticメソッド++「インターフェイス」
あなたはshowNotificationのコードを追加していません。また、logcatを添付してください。 – jonathanrz
showNotificationは単なる通知です。問題は、最初のshowNotificationに赤い下線が引かれており、非静的であり、参照できないことです。 –