2014-10-21 1 views
0

Вы можете подумать, что это дублированный вопрос, но я поднял почти каждый существующий ответ, и я все еще не понял его. Вот мой вопрос:Android YesNoDialogPreference

  1. Я хочу, чтобы создать по умолчанию YesNoDialogPreference путем расширения DialogPreference класса
  2. Создание предпочтения с помощью YesNoDialogPreference в prefs.xml
  3. В MainActivity я хочу установить onClickListener для Да и Без вариантов

Я попытался сделать это с помощью AlertDialog.Builder, но это не сработало, я никогда также пытался использовать com.android.internal.preference.YesNoPreference и он сделал работу причину ошибки R.attr Can кто-нибудь, пожалуйста, дайте мне полный ответ ... ПОЖАЛУЙСТА !!, я боролся с этим уже несколько недель.

Вот мой код: YesNoDialogPreference.java

import android.content.Context; 
import android.preference.DialogPreference; 
import android.util.AttributeSet; 

public class YesNoDialogPreference extends DialogPreference { 

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

    @Override 
    protected void onDialogClosed(boolean positiveResult) { 
     super.onDialogClosed(positiveResult); 
     persistBoolean(positiveResult); 
    } 

} 

Предпочтение от prefs.xml

<com.me.myapp.YesNoDialogPreference 
      android:key="KEY" 
      android:dialogMessage="You sure ?" 
      android:title="Do something" 
      android:summary="will do something" 
      /> 

Я не знаю, как связать их в MainActivity.

+0

Обновленных мой question..please помощь – Bisho

+0

Любой ошибки повреждена? Попробуйте определить оба конструктора: public YesNoDialogPreference (контекст контекста, AttributeSet attrs) { super (context, attrs); } public YesNoDialogPreference (контекст контекста, AttributeSet attrs, int defStyle) { super (context, attrs, defStyle); } – Govtart

+0

Сделано ... Это создаст DiaolgPreference ok..Но я хочу сделать что-то вроде dialog.setPoasativeButton (...... и т. Д.); в моей MainActivity ... точно так же, как AlertDialog – Bisho

ответ

1

То, что вы пытаетесь достичь, не имеет смысла. MainActivity не активен, поэтому не может быть целью диалога. Вам нужен обработчик onClick в YesNoDialogPreference, который затем делает то, что вы хотите. Обычно вы сохраняете значение в своих настройках и читаете это значение во всех других местах - например, в вашем MainActivity. Вот пример кода: How to get the DialogPreference POSITIVE_BUTTON to work on OnClick?

+0

Хорошо. У меня есть 6 или более DialogPrferences..do я должен сделать это для каждого из них? – Bisho

+0

Да, но тогда вы можете создать общий базовый класс - учитывая, что у вас есть общие шаги. – Carsten

+0

Я действительно думал об этом .. но я не знаю, как точно реализовать его. Не могли бы вы рассказать мне, как? – Bisho

0

Просто используйте метод OnClick и осуществить слушатель, чтобы обеспечить ручки действия, где вы хотите

@Override 
public void onClick(DialogInterface dialog, int which){ 

    if(which == DialogInterface.BUTTON_POSITIVE) { 
     // do your stuff to handle positive button 

    }else if(which == DialogInterface.BUTTON_NEGATIVE){ 
     // do your stuff to handle negative button 
    } 
} 
+0

Это то, что мне нужно, но у меня есть 5 предпочтений YesNo, как я могу определить, какой из них был нажат в моем абстрактном классе YesNoDialog, используя андроид: key ??потому что я хочу, чтобы один класс обрабатывал все YesNoPreferences. – Bisho

+0

Попробуйте String key = attrs.getAttributeIntValue («http://schemas.android.com/apk/res/android», «key», 100); – Govtart

+0

Хорошо, что это просто отлично @Govtart, но я хочу использовать этот ключ в инструкции switch, вы можете показать мне, как это сделать? – Bisho

Смежные вопросы