2011-02-06 5 views
0

주 활동보기에서 텍스트보기를 업데이트하고 싶습니다.다른 활동의 주요 활동 값 업데이트

기본 응용 프로그램 ascreen, 해당 화면에 이 들어있는 main.xml 파일이 있는데, 다른 활동 (클래스)에서 수시로 업데이트해야하는 textview가 있습니다.

주요 활동에서 해당 값을 업데이트하려고하면 완벽하게 작동하지만 다른 활동에서 수행하려고 할 때 응용 프로그램이 충돌합니다.

여기에 주요 활동 방법이 있습니다. 다른 활동에서이를 호출하는 방법을 알아야합니다.

주요 활동 방법 :

public void update_counters(){  
     TextView sms_textview = (TextView) findViewById(R.id.sms_textview); 
     sms_textview.setText(String.valueOf(sms_missed)); 
    } 

주요 활동의 하나의 인스턴스가

답변

-2

제발 도와주세요? 그렇다면 기본 활동 클래스에 정적 참조를 저장하고 onCreate에서 초기화하십시오.

static MainActivity TheMainActivity; 

static public void update_counters() 
{ 
    TextView sms_textview = (TextView) TheMainActivity.findViewById(R.id.sms_textview); sms_textview.setText(String.valueOf(sms_missed)); 
} 

다음은 다른 활동 :

MainActivity.update_counters(); 

이 싱글이라고 그런 다음 인스턴스에 도착하는 그 참조를 사용하는 정적 메서드가 있습니다. 또는 때로는 글로벌입니다.

1

사실 액티비티 (또는 다른 컨텍스트)에 대한 정적 참조를 갖는 것은 바람직하지 않습니다. 활동은 서로 독립적으로 이루어 지도록 설계되었습니다.

startActivityForResult() 메소드로 시작한 활동에서 결과를 수신하고 적절하게 반응하는 결과를 수신 할 수 있습니다.

0

@Roman과 마찬가지로, UI 활동을 다른 활동에 접하는 것이 좋지 않으며 활동은 독립적이어야합니다. 할 수있는 일은 메시지 전달 방법을 약간 재 설계하는 것입니다. 하나는 좋은 것이 방송 수신기를 사용하는 것입니다, 그것은 또한 프로그램의 더 나은 확장 성을 보장합니다.

그래서 '다른'활동이 update_counters를 호출해야 할 때마다 그러한 의도를 방송합니다. 이전 MainActivity은 해당 브로드 캐스트를 청취하고 필요에 따라 UI를 업데이트하기 위해 등록해야합니다. 가장 최선의 방법은 해당 활동에 대한 몇 가지 인스턴스 또는 해당 방송에도 등록 할 수있는 다른 활동을 가질 수 있다는 것입니다.

관련 문제