如何从XML首选项的对话框中启动一个活动?

3

好的,我有一个设置活动,它是从一个 preferences.xml 文件中填充的,使用 addPreferencesFromResource(R.xml.preferences); 方法,其中包含一个对话框首选项:

<com.android.maxr1998.cleanit.DialogPreference
    android:title="@string/pref_dev"
    android:key="dev"
    android:dialogIcon="@drawable/alerts_and_states_warning"
    android:dialogLayout="@layout/dev_dialog"
    android:positiveButtonText="@android:string/yes"
    android:negativeButtonText="@android:string/cancel"/>

现在,当我点击“是”,我希望启动另一个活动...
这是我的DialogPreference类。
package com.android.maxr1998.cleanit;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Region;
import android.provider.ContactsContract;
import android.util.AttributeSet;

public class DialogPreference extends android.preference.DialogPreference {

    public DialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public DialogPreference(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    public interface ClickListener {
        public void onPositiveBtnClicked(...?);
    }

}

我需要在“...”处放什么?
2个回答

2
编写一个DialogPreference的接口,在您的活动中实现它。在正向点击事件回调中。
class DialogPreference extends ... {
   public interface ClickListener {
      public void onPositiveBtnClicked(...);
   }
   public void setListener(ClickListener l) {
      mClickListener = l;
   }
   @Override
   onClick(DialogInterface dialog, int which) {
      if(which == DialogInterface .BUTTON_POSITIVE) {
         mClickListener.onPositiveBtnClicked(...)
      }
   }
}

2
我用以下方法解决了这个问题:
  • 使用普通偏好设置
  • 在Activity中的Preference上应用onclicklistener
  • 从它启动AlertDialog
  • AlertDialog中的Positive按钮点击会启动Activity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接