web-dev-qa-db-ja.com

確認(yes / no)DialogPreferenceを実装する方法?

はい/いいえの簡単な確認ダイアログを表示する設定を実装するにはどうすればよいですか?

例については、Browser->Setting->Clear Cacheを参照してください。

94
sh1ng

これは単純な アラートダイアログ です。Federicoは、あなたが物事を調べることができるサイトを提供しました。

アラートダイアログを作成する方法の簡単な例を次に示します。

new AlertDialog.Builder(this)
.setTitle("Title")
.setMessage("Do you really want to whatever?")
.setIcon(Android.R.drawable.ic_dialog_alert)
.setPositiveButton(Android.R.string.yes, new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int whichButton) {
        Toast.makeText(MainActivity.this, "Yaay", Toast.LENGTH_SHORT).show();
    }})
 .setNegativeButton(Android.R.string.no, null).show();
264
Maaalte

Androidには、必要なことを正確に実行する組み込みYesNoPreferenceクラスがあります(yesオプションとnoオプションの確認ダイアログ)。公式のソースコードを参照してください こちら

残念ながら、それはcom.Android.internal.preferenceパッケージにあり、AndroidのプライベートAPIの一部であり、アプリケーションからアクセスできないことを意味します(プライベートAPIクラスは予告なく変更される場合があるため、Googleが許可しない理由あなたはそれらにアクセスします)。

解決策:提供したリンクから公式のソースコードをコピー/貼り付けて、アプリケーションのパッケージにクラスを再作成するだけです。私はこれを試してみましたが、うまく機能します(そうすべきでない理由はありません)。

その後、他の設定と同じようにpreferences.xmlに追加できます。例:

<com.example.myapp.YesNoPreference
    Android:dialogMessage="Are you sure you want to revert all settings to their default values?"
    Android:key="com.example.myapp.pref_reset_settings_key"
    Android:summary="Revert all settings to their default values."
    Android:title="Reset Settings" />

次のようになります:

screenshot

設定XML画面を使用している場合、またはカスタム画面を使用している場合は、インテント設定を使用して、コードは次のようになります

intentClearCookies = getPreferenceManager().createPreferenceScreen(this);
    Intent clearcookies = new Intent(PopupPostPref.this, ClearCookies.class);

    intentClearCookies.setIntent(clearcookies);
    intentClearCookies.setTitle(R.string.ClearCookies);
    intentClearCookies.setEnabled(true);
    launchPrefCat.addPreference(intentClearCookies);

そして、以下のようなアクティビティクラスを作成します。異なるアプローチとして異なる人々がいるので、あなたが好む任意のアプローチを使用できるのは単なる例です。

public class ClearCookies extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    showDialog();
}

/**
 * @throws NotFoundException
 */
private void showDialog() throws NotFoundException {
    new AlertDialog.Builder(this)
            .setTitle(getResources().getString(R.string.ClearCookies))
            .setMessage(
                    getResources().getString(R.string.ClearCookieQuestion))
            .setIcon(
                    getResources().getDrawable(
                            Android.R.drawable.ic_dialog_alert))
            .setPositiveButton(
                    getResources().getString(R.string.PostiveYesButton),
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            //Do Something Here

                        }
                    })
            .setNegativeButton(
                    getResources().getString(R.string.NegativeNoButton),
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            //Do Something Here
                        }
                    }).show();
}}

前に言ったように、これを行う方法はいくつかあります。これはあなたがあなたの仕事をすることができる方法の1つです、あなたがそれが欲しいものを手に入れたと感じるならば、答えを受け入れてください。

3
PravinDodia

ここで、DialogPreferenceの使用方法の例で同様の質問に回答しました。

XMLからDialogPreferenceを作成

1
arberg