alma ve benim anahtar değerlerini alma ve tüm iyi ve (şimdi siz bana yardım ettiğim) iyi işler AMA - benim listpreference menüler pop-up, sadece bir iptal düğmesi içerir. listpreference kullanma ve benim android app listpreference kullanıyorum anahtar eserler ancak hiçbir Tamam düğmesine
kullanıcı kırmızı, mavi ve yeşil arasında bir seçim yaptığını varsayalım. Liste önceliği iletişim kutusu ilk açıldığında, diyalog sadece bir iptal düğmesi gösterir. Bu nedenle, kullanıcı kendi seçimini seçtiğinde iletişim kutusu kaybolur. kullanıcı kendi ayarını seçtiğinde, onlar radyo düğmesi vurgulanır görmek ve daha sonra devam edin ve tamam butonuna tıklayın, böylece bunu istiyorum ... ama bir ok düğmesi yok ve neden bilemiyorum. Herhangi bir yardım harika olurdu ... al
8
A
cevap
6
İstediğiniz şekilde çalışmak için ListPreference
klonlayıp yeniden kullanabilirsiniz ve sonuç olarak kendi özel Preference
sınıfınızı oluşturabilirsiniz.
Ancak ListPreference
sadece ("İptal") düğmesini bir negatif kullanmak üzere ayarlandı. Kaynak kodu söylediği gibi: Ben önceki cevabı önerdi ve Android kaynak koduna dayalı kendi ListPreference hayata neyi yapmış
/*
* The typical interaction for list-based dialogs is to have
* click-on-an-item dismiss the dialog instead of the user having to
* press 'Ok'.
*/
6
. Aşağıda, Tamam düğmesine ekleyen uygulamam var.
myPreferenceList.java
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.preference.ListPreference;
import android.util.AttributeSet;
public class myPreferenceList extends ListPreference implements OnClickListener{
private int mClickedDialogEntryIndex;
public myPreferenceList(Context context, AttributeSet attrs) {
super(context, attrs);
}
public myPreferenceList(Context context) {
this(context, null);
}
private int getValueIndex() {
return findIndexOfValue(this.getValue() +"");
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
super.onPrepareDialogBuilder(builder);
mClickedDialogEntryIndex = getValueIndex();
builder.setSingleChoiceItems(this.getEntries(), mClickedDialogEntryIndex, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mClickedDialogEntryIndex = which;
}
});
System.out.println(getEntry() + " " + this.getEntries()[0]);
builder.setPositiveButton("OK", this);
}
public void onClick (DialogInterface dialog, int which)
{
this.setValue(this.getEntryValues()[mClickedDialogEntryIndex]+"");
}
}
Sonra aşağıdaki gibi sizin preference.xml sınıfı kullanabilirsiniz:
<com.yourApplicationName.myPreferenceList
android:key="yourKey"
android:entries="@array/yourEntries"
android:entryValues="@array/yourValues"
android:title="@string/yourTitle" />
4
techi50 kod doğru fakat iptal düğmesi' için çalışmıyor '. Techi50 ve Ajinkya önerdiği çözüm Tamam çalışır
protected void onPrepareDialogBuilder(Builder builder) {
super.onPrepareDialogBuilder(builder);
prevDialogEntryIndex = getValueIndex(); // add this
mClickedDialogEntryIndex = getValueIndex();
builder.setSingleChoiceItems(this.getEntries(), mClickedDialogEntryIndex, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mClickedDialogEntryIndex = which;
}
});
builder.setPositiveButton("OK", this);
}
public void onClick (DialogInterface dialog, int which)
{
// when u click Cancel: which = -2;
// when u click OK: which = -1;
if(which == -2){
this.setValue(this.getEntryValues()[prevDialogEntryIndex]+"");
}
else {
this.setValue(this.getEntryValues()[mClickedDialogEntryIndex]+"");
}
}
1
: İşte bazı değişiklik bulunmaktadır. Ancak, aynı zamanda varsa OnPreferenceChangeListener o patlamaz.
public void onClick (DialogInterface dialog, int which) {
if(which == -2) {
this.setValue(this.getEntryValues()[mClickedDialogEntryIndexPrev]+"");
}
else {
String value = this.getEntryValues()[mClickedDialogEntryIndex] + "";
this.setValue(value);
callChangeListener(value);
}
}
İlgili konular
- 1. checkboxpreference çoklu bağımlılık android veya listpreference bağımlılığı
- 2. Değişiklik ListPreference stili
- 3. android: ListPreference başlık rengini nasıl değiştirebilirim?
- 4. İçinde tercih kategorisinde bulunan android ListPreference nasıl açılır veya benzetilir?
- 5. ListPreference öğelerini bir adaptörden yüklemek mümkün mü?
- 6. Android. PreferenceActivity. ListPreference. ListPreference'ın arka plan rengini nasıl değiştirebilirim?
- 7. ListView neden ListPreference iletişim kutusundaki TextView üzerinde kalıyor?
- 8. require.main.require eserler ancak Mocha testi
- 9. benim app bir android uygulaması
- 10. Android'de ListPreference çoklu seçim yapmak için kolay yolu?
- 11. Theme.Holo.Dialog diyaloğunda Tamam ve iptal düğmesi nasıl eklenir?
- 12. Android Animasyon eserler bırakılıyor
- 13. SKPaymentTransactionStateFailed, ancak hiçbir NSError
- 14. phonegap android uygulaması benim app ikonu göstermiyor :(
- 15. Benim app
- 16. benim app
- 17. Benim android app parçası sınırında Burada
- 18. nasıl app çalıştırdığınızda benim sqlite Android
- 19. Firebase @PropertyName benim app Firebase Gerçek Zamanlı Veritabanı kullanıyorum
- 20. Benim Sinatra app günlüğünü etkinleştirmek için bu kodu kullanıyorum Sinatra
- 21. "adjustResize" Benim app
- 22. Benim durumumda MVC5 app
- 23. bile benim app AUTOCANCEL
- 24. Apple App Store Tetikleyici ile tamam mı?
- 25. BackgroundColorSpan benim app
- 26. benim app video
- 27. Android App Proguard ve Dagger
- 28. Android - apk imzalama: Eserler sertifika zinciri valide & imzalar
- 29. Google App Engine ve anahtar/değer mağazaları
- 30. WINAPI kullanarak mesaj kutusunun 'TAMAM' düğmesine tıklayın C#
daha spesifik olmak gerekirse:
böyle, tamam düğmesi tıklandığında callChangeListener() fonksiyonunu çağırmak gerekir Bunu düzeltmek için DialogInterface.OnClickListener uygular – southerton