2012-11-29 3 views
1

변수 scoretemp에 문제가 있습니다. 항상 0을 반환합니다. 내부 조건 일 경우 작동합니다.변수가 작동하지 않습니다 android

for (final Score score2 : scores) { 
    scoretemp = score2.getResult(); 
} 

하지만 마지막 줄에 결과를 표시하려고 할 때.

TV2.setText(""+scoretemp); 

아무런 이유없이 항상 0입니다.

코드 : 콜백 방법 requestControllerDidReceiveResponse가 비동기 적으로 호출이 할 수있는 아마 TV2.setText (""+ scoretemp) 후 호출 할 수 있도록되어

BScore.setOnClickListener(new View.OnClickListener() { 

    double scoretemp; 

    public void onClick(View arg0) { 
    BScore.setVisibility(View.GONE); 
    sp.play(click, 1, 1, 0 , 0, 1); 
    int scoreresult = totalscore; 
    final RequestControllerObserver observer2 = new RequestControllerObserver() { 
     public void requestControllerDidReceiveResponse(final RequestController requestController) { 
     // get the scores from our controller 
     final ScoresController scoresController = (ScoresController) requestController; 
     final List<Score> scores = scoresController.getScores(); 
     if(scores!=null){ 
      for (final Score score2 : scores) { 
      scoretemp = score2.getResult(); 
      } 
      // we're done! 
      dismissDialog(DIALOG_PROGRESS); 
     } 
     } 
    public void requestControllerDidFail(final RequestController aRequestController, final Exception anException) { 
     dismissDialog(DIALOG_PROGRESS); 
     Toast.makeText(getApplicationContext(), "لا يوجد إتصال بالأنترنت أو خطأ في إستقبال البيانات", Toast.LENGTH_LONG).show(); 
} 
    }; 
// set up a ScoresController with our observer 
ScoresController scoresController2 = new ScoresController(observer2); 
showDialog(DIALOG_PROGRESS); 
scoresController2.setMode(mode); 
scoresController2.loadRangeForUser(Session.getCurrentSession().getUser()); 
TV2.setText(""+scoretemp); 
+3

변수가 작동하지 않습니다. 변수는 다양합니다. – Juvanis

+1

콜백 메소드 requestControllerDidReceiveResponse는 비동기 호출되므로 TV2.setText (""+ scoretemp); 호출됩니다. –

+1

@RobeEleckers 나는 이것이 문제라고 생각한다. 마지막 줄은 청취자 내부에 있어야하며 외부에 있어야합니다. –

답변

1

; 호출됩니다.

(GUI 스레드에서 호출) requestControllerDidReceiveResponse 메서드 내에서 업데이트를 수행하거나 값을 변경하면 GUI 스레드에서 처리하는 일종의 propertychangedevent를 실행할 수 있습니다.

관련 문제