cevap

199

Bu basit bir alert dialog, Federico size bir şeyler bulabileceğiniz bir site verdi.

Bir uyarı iletişim kutusunun nasıl oluşturulabileceğinin kısa bir örneği.

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(); 
+3

Bir Dialog nasıl oluşturulacağını biliyorum ama tercihleri ​​hakkında benim q. – sh1ng

+1

Sorunuz tercihlerle ilgili mi? Tamam. Buraya bir göz atın: http://www.kaloer.com/android-preferences – Maaalte

+1

Bu kaynağı zaten okudum. OnClick'e abone olunan özel Tercihler oluşturabilir ve işleyebilirim, ancak bu en kolay yol mu? – sh1ng

3

kullanın Niyet Tercih size özel ekran kullanıyorsanız, tercih xml ekranı veya sizi kullanıyorsanız o zaman kod

altına
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); 

gibi olurdu Ve sonra aşağıda gibi biraz Etkinlik sınıf oluşturma , Farklı insanlar olarak farklı yaklaşımlar gibi istediğin herhangi bir yaklaşımı kullanabilirsin, bu sadece bir örnektir.

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(); 
}} 

Daha önce de belirtildiği gibi, bunu yapmanın birçok yolu vardır. Bu, görevinizi yapabileceğiniz yollardan biridir, lütfen istediğiniz şeyi aldığınızı düşünüyorsanız, cevabı kabul edin.

+0

Teşekkürler!Bu, iletişim servisini bir hizmetten başlattığım için ve benim durumumda iletişim kutusunu barındırmak için bir etkinliğe ihtiyaç duyduğumdan, uygulamam için ihtiyaç duyduğum neredeyse tam olarak bu. –

+0

Buna bayılıyorum. IMHO, ayrıntılı, ancak doğru ve doğru yolu – John

8

Android, tam olarak istediğiniz şeyi yapan (Evet ve hayır seçenekleri olan bir onaylama iletişim kutusu) yerleşik bir YesNoPreference sınıfı ile birlikte gelir. Resmi kaynak kodu here'a bakın.

com.android.internal.preference paketinde, bu, Android'in özel API'lerinin bir parçası olduğu ve uygulamanızdan erişemediğiniz anlamına geldiği anlamına gelir (özel API sınıfları önceden bildirilmeden değiştirilebilir), dolayısıyla Google'ın neden izin vermediği onlara erişirsiniz).

Çözüm: Sadece sağladığınız bağlantıdan resmi kaynak kodunu kopyalayıp yapıştırarak uygulamanızın paketindeki sınıfı yeniden oluşturun. Bunu denedim ve gayet iyi çalışıyor (neden olmamalı diye bir sebep yok).

Diğer tüm Tercihler gibi preferences.xml numaranıza ekleyebilirsiniz. Örnek: şuna benzer

<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

+1

Harika bir çözüm! Ama bu sınıfın kurucularından biriyle ilgili bir sorun var! Bir kaynak attr başvurur (com.android.internal.R.attr.yesNoPreferenceStyle)! Hangisi çözülemez? Geçici çözüm nedir? Kendi projemde bir tane mi yaratmalıyım? – reubenjohn