2013-08-13 3 views
2

Ok - preface with android에 익숙하며 java에도 새로운 기능이 있습니다. 하지만 전 평생에 걸쳐 코드를 작성했습니다 .....textView 업데이트가 표시되지 않습니다.

저는 응용 프로그램을 작성 중이며 일부 메소드를 가져 와서 유틸리티 클래스에 추가하려고합니다. 특히, 나는 활동에서 벗어나고 싶었던 텍스트보기를 업데이트하는 방법을 가지고있다.

액티비티에있을 때 매개 변수 목록에서 뷰를 수락하는 유일한 차이점은 메서드의 두 가지 버전이 있다는 것입니다.이 뷰는 사용자 지정 대화 상자의 일부 필드를 채우는 데 사용했습니다. 그들은 모두 잘 작동했습니다.

일단 외부 유틸리티 패키지/클래스에 배치되면이 메서드는 더 이상 작동하지 않으며 오류가없고 필요로하는 것으로 보입니다. 일부 로깅을 수행하고 뷰 표시가 표시되고 textview ID가 나타납니다. 올바른지. 화면에는 아무 변화가 없습니다.

나는 이것이 완전히 명백하고 어리석은 것이라고 생각하지만 나는 그것을 소화하지 못하고있다./추가 정보 w

package xxx.xxx.Utility; 

(some imports) 

public class Utility { 
    public static void updateTextView(int id, String opt_data, View v) { 
     String TAG = "updateTextView: "; 
     if (v.getVisibility() == View.VISIBLE) Log.i(TAG," visible"); 
     TextView tvTarget = (TextView) v.findViewById(id); 
     if (tvTarget == null) { 
      Log.i(TAG, "Error: updateTextView target is null"); 
     } 
     if (opt_data != null) { 
      if (tvTarget != null) { 
       tvTarget.setText(opt_data);    
      } 
     } else { 
      if (tvTarget != null) { 
       tvTarget.setText(" "); 
      } 
     } 
    } 
} 

편집 :이 방법은 또한 데이터가있는 팝업 대화 상자의 일부 필드를 채우는 데 사용되었다는 언급 inital 설명에서

. 사실, 나는 그러한 방식으로 여러 대화 상자를 요청할 수 있으며 모든 대화 상자가 올바르게 표시되고 올바른 (다른) 데이터로 표시됩니다. 따라서 주 활동 (초기)보기의 TV 데이터를 업데이트하려고 할 때만 실패하는 것으로 보입니다.

+0

도 src 디렉토리의 외부 패키지입니까? 아니면 도서관 프로젝트 나 항아리를 만들었습니까? 당신을위한 유틸리티 패키지/클래스? – Peshal

+0

구현 게시하십시오 .. 그냥 일반적인 알리미 : 다른 스레드에서보기를 변경할 수 없습니다. 그것들을 생성 한 UI 스레드에서만. – Igor

+0

TextViews 만 업데이트하고 동시에 디버깅을 좀 더 쉽게하려면 함수를 호출하기 전에 실제로 TextView를 인수로 사용하고 모든 조회를 수행하도록 함수를 변경하십시오. 리팩터링 중에 문제가 발생하면 변경 사항을 최소화하여 오류를 찾으십시오. – HonkyTonk

답변

0

나는 이것이 완전히 명백하고 어리석은 것이라고 짐작하고 있지만, 나는 을 분류 할 수 없다.

루트 (?) 상위 (?)보기를 올바르게 얻는 데 도움이됩니다. IE,

currentView = this.findViewById (android.R.id.content) .getRootView();

이제 모두 정상입니다.

관련 문제