11

プログラムでいくつかの設定画面を追加する PreferenceActivity を起動しました。だから私は自分の設定画面のリストを持っています。

例:

  • トト
  • ティティ
  • タタ

だから私は繰り返して関数を呼び出します(Boardカスタムオブジェクトです):

private PreferenceScreen CreatePreferenceScreen(Board b) {
    PreferenceScreen p = getPreferenceManager().createPreferenceScreen(this);
    p.setPersistent(true);
    p.setKey("preferenceScreen_" + b.getId());

    PreferenceCategory general = new PreferenceCategory(this);
    general.setTitle("General");
    p.addPreference(general);

    Preference delete = new Preference(this);
    delete.setTitle("delete");
    final PreferenceScreen pFinal = p;
    delete.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(Preference arg0) {
            String delId = board.getId();
            PreferenceCategory themes = (PreferenceCategory) findPreference("themes");
            PreferenceScreen screen =(PreferenceScreen)findPreference("preferenceScreen_" + delId); 
            themes.removePreference(screen);
            /*GO BACK TO PREFERENCEACTIVITY HERE OR KILL THIS SCREEN*/
            return true;
        }
    });
    general.addPreference(delete);
    return p;
}

totoをクリックすると、totoの設定画面が開き、この画面に「削除」オプションがあります。削除をクリックすると、この設定画面が PreferenceActivity (前の画面) から削除されますが、まだ設定画面 toto にいます。

「削除」で前の画面に戻りたい。

finish()アプリを終了するため、設定画面で toto を使用できません。戻るボタンをクリックすると、PreferenceActivity (前の画面) に戻り、toto の設定画面が削除されました (ヤタ、その機能は機能しました!)

4

1 に答える 1

2

ユーザーは、 PreferenceScreen 開発者ドキュメントのおかげで解決策を見つけました。

別の設定階層内に表示されると、それが表示され、設定の別の画面へのゲートウェイとして機能します (設定の別の画面をダイアログとして表示するか、getIntent() からの startActivity(android.content.Intent) を介して)。この PreferenceScreen の子は、この PreferenceScreen が表示されている画面には表示されません。代わりに、この設定がクリックされると別の画面が表示されます。

したがって、これを置き換えます:

/*GO BACK TO PREFERENCEACTIVITY HERE OR KILL THIS SCREEN*/

これとともに:

pFinal.getDialog().dismiss();

そして、それは目的の仕事を達成します: 現在の を閉じpreferenceScreenます。

于 2014-07-02T13:35:04.513 に答える