답변

199

간단히 말해서 alert dialog입니다. 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(); 
+3

는 내가 대화를 구축하는 방법을 알고 있지만, 기본 설정에 대한 내 질문. – sh1ng

+1

질문은 환경 설정에 관한 것입니까? 괜찮아. 여기를보십시오 : http://www.kaloer.com/android-preferences – Maaalte

+1

나는이 소스를 이미 읽었습니다. 나는 OnClick에 등록 된 커스텀 Preference를 생성하고 처리 할 수 ​​있지만, 가장 쉬운 방법일까요? – sh1ng

3

사용 의도 성향 당신에게 사용자 정의 화면을 사용하는 경우는 기본 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(); 
}} 

앞서 말한 것처럼 여러 가지가 있습니다. 이것은 당신이 당신의 일을 할 수있는 방법 중 하나입니다, 당신이 원했던 것을 가지고 있다고 느끼면 대답을 받아주십시오.

+0

감사합니다.이것은 서비스에서 대화 상자를 트리거하고 있기 때문에 거의 내 앱에 필요한 것입니다. 제 경우에는 대화를 호스트 할 액티비티가 필요합니다. –

+0

좋아해. IMHO 자세한,하지만 승인 및 올바른 방법 – John

8

Android에는 네가 원하는 것을 정확히 수행하는 내장 된 YesNoPreference 클래스가 있습니다 (예 및 옵션이없는 확인 대화 상자). 공식 소스 코드 here을 참조하십시오.

안타깝게도이 패키지는 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

+1

위대한 솔루션! 그러나이 클래스의 생성자 중 하나에 문제가 있습니다! 그것은 attr (com.android.internal.R.attr.yesNoPreferenceStyle) 리소스를 참조합니다! 어떤 문제를 해결할 수 없습니다. 해결 방법은 무엇입니까? 나 자신의 프로젝트에서 하나 만들어야 하나? – reubenjohn