2017-03-26 3 views
0

사용자에게 표시 할 메시지 목록이 있습니다. 이들은 배열에 저장됩니다. 그런 다음 경고를 표시하고 사용자가 긍정적 인 버튼을 클릭하면 메시지를 하나씩 살펴보고 싶습니다.클릭 할 때마다 Android가 AlertDialog 텍스트를 변경합니다.

_msgCount는 내 클래스의 전용 변수입니다.

msg는 로컬 최종 변수입니다.

내 모든 로깅이 발생합니다. 그러나 메시지는 변하지 않습니다. 나는 또한 _alert.hide(), setMessage() 그리고 _alert.show()를 시도했다.

도움 주셔서 감사합니다.

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     _alert = builder.setTitle("Whoa there!") 
       .setMessage(msgs[_msgCount]) 
       .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) 
        { 
         Log.i("EasterHunt", "On positive click"); 
         _alert.setMessage(msgs[++_msgCount]); 
        } 
       }) 
       .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) 
        { 
         Log.i("EasterHunt", "On negative click"); 
         Toast.makeText(MapsMarkerActivity.this, R.string.nope, Toast.LENGTH_SHORT).show(); 
        } 
       }) 
       .create(); 



     _alert.setOnShowListener(new DialogInterface.OnShowListener() { 
      @Override 
      public void onShow(DialogInterface dialog) 
      { 
       Log.i("EasterHunt", "what!"); 
      } 
     }); 
+0

다음과 같은 것을 시도해 보셨습니까? dialogInterface.setMessage (msgs [++ _ msgCount]); –

+0

비슷한 정보 더보기 (AlertDialog) dialogInterface.setMessage (msgs [++ _ msgCount]); https://developer.android.com/reference/android/app/AlertDialog.html –

답변

1

대화 상자의 닫기 작업을 사용하지 않으려면 양수 버튼 클릭을 재정의해야합니다. 당신이 이미 내장에 AlertDialog의 메시지를 변경할 수 없음 확인이

... 
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialogInterface, int i) { 
     // leave this empty 
    } 
}) 
...; 

_alert.show(); // show the dialog before getting its button 

_alert.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Log.i("EasterHunt", "On positive click"); 
     if (_msgCount < msgs.length - 1) { 
      _alert.setMessage(msgs[++_msgCount]);  
     } else { 
      // do some action 
      _alert.dismiss(); 
     } 

    } 
}) 
+0

Nice. 한가지 언급 할 점은 : getButton()을 실행하기 전에 대화 상자가 이미 표시되어 있어야합니다. 즉,'_alert.show()'가 수행되어 있어야합니다. – azizbekian

+0

예, 잊어 버렸습니다. 나는 그것을 내 대답에 추가 할 것이다. 감사! – Sourabh

+0

이것은 내가 당신의 대답을 얻기 전에 실제로 끝내었지만 응답과 코드에 감사드립니다! 또한 그것이 처음으로 보여지는 것에 관해서는 .... 나는 그 축복을 만났다! – kamcknig

0

같은 작업을 수행합니다. 매번 새 것을 만들려고합니다.

String[] msgs = new String[] { "ciao", "boh", "buh" }; 
    int _msgCount = 0; 

    private void showDialog() { 
    if (_msgCount >= msgs.length) return; 

    new AlertDialog.Builder(this).setTitle("Whoa there!") 
     .setMessage(msgs[_msgCount++]) 
     .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
      Log.i("EasterHunt", "On positive click"); 
      showDialog(); 
      } 
     }) 
     .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
      Log.i("EasterHunt", "On negative click"); 
      Toast.makeText(MainActivity.this, "nope", Toast.LENGTH_SHORT).show(); 
      } 
     }) 
     .show(); 
    }