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 데이터를 업데이트하려고 할 때만 실패하는 것으로 보입니다.
도 src 디렉토리의 외부 패키지입니까? 아니면 도서관 프로젝트 나 항아리를 만들었습니까? 당신을위한 유틸리티 패키지/클래스? – Peshal
구현 게시하십시오 .. 그냥 일반적인 알리미 : 다른 스레드에서보기를 변경할 수 없습니다. 그것들을 생성 한 UI 스레드에서만. – Igor
TextViews 만 업데이트하고 동시에 디버깅을 좀 더 쉽게하려면 함수를 호출하기 전에 실제로 TextView를 인수로 사용하고 모든 조회를 수행하도록 함수를 변경하십시오. 리팩터링 중에 문제가 발생하면 변경 사항을 최소화하여 오류를 찾으십시오. – HonkyTonk