마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[안드로이드] 각각 탭을 눌렀을 경우 각탭의 새로고침을 어떻게 하나요?

0 추천

안녕하세요. 안드로이드 어플리케이션을 개발하고 있는 초보 개발자 입니다.

본론으로 각 탭을 눌렀을때, 해당되는 탭의 화면을 새로 고침하고 싶습니다.

위의 이미지를 참고하세요.

먼저 어플리케이션의 구성요소는 다음과 같습니다.

JAVA - tab.class   |   sub1.class   |   sub2.class

Layout - tab.xml   |   sub1.xml   |   sub2.xml

tab은 탭 기능을 합니다. // 메인입니다.

sub1는 화면에 버튼이 있는데, 버튼을 누르면 sub2에게 데이터(111)를 전달합니다.

sub2는 TextView의 초기화면은 100입니다. 여기서 sub1이 버튼을 누르면 sub2에서 데이터를 받아

 TextView에 sub1으로부터 받은 데이터(111)를 전달해 결과를 출력합니다.

 

위의 상황을 전제로 읽어주시기 바랍니다.

저는 지금 화면 새로고침이 안되 굉장히 남감합니다. sub1에서 받은 데이터를 sub2화면에 띄어줘야하는데,

초기설정한 값(100)이 계속 뜹니다. 하지만 새로띄어주면(탭기능 이용 x ) 정상적으로 111의 결과가 뜹니다.

화면은 리플레쉬(새로고침)하고 싶은데, 어떻게 구현해야 할까요?

 

예를들어 그림의 탭 2를 누르면 sub2화면이 새로고침이 되야 합니다. 그리고 그림의 탭 1을 누르면 sub1화면이 새로고침되게 만들고 싶습니다.

 

어떻게 구현해야 할까요?

답변은 관련 소스, 링크, 실마리라도 주시면 바로 채택드리겠습니다.

kissout (1,100 포인트) 님이 2016년 4월 27일 질문

2개의 답변

0 추천
 
채택된 답변
                Intent intent = new Intent(sub1.this, sub1.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                startActivity(intent);

 

sadeva (21,550 포인트) 님이 2016년 4월 27일 답변
kissout님이 2016년 4월 28일 채택됨
TabHost tabs = getTabHost();

        // TAB 1
        TabHost.TabSpec spec = null;
        Intent intent = null;

        spec = tabs.newTabSpec("tab01");
        intent = new Intent(this, Testing.class);
        intent.putExtra("mode", "new");
        intent.putExtra("initialize", true);
        intent.putExtra("request", true);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

        spec.setContent(intent);

        spec.setIndicator("", getResources().getDrawable(R.drawable.icon_timer_tab));
        tabs.addTab(spec);

위의 소스코드는 tab.class입니다.

탭 소스코드의 일부분인데, sadeva님의 방법은 이미 적용되어있습니다.
그리고 new Intent(sub1.this, sub1.class); // 이렇게 적으면 저는 에러가 떠서,
new Intent(this, sub1.class); // 이렇게 적었습니다.

혹시 다른방법이 있나요?
아니면 onResume()를 이용하여서 새로 고침일때 바뀐 상태값을 onResume() 에 넣어주심이 어떨련지요?
ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ
이것 역시 안됩니다. (기대했었는데...)

tab.class에도 넣어보고, sub2에도 넣어서 적용해보았지만 아무 변화는 없었습니다. ㅠ

하지만 답변은 감사합니다.
제가 계속 찾다 결국 문제를 찾게 되었는데, 사실 이미 제가 화면 초기화를 하였지만, 다른 문제때문에 화면이 변경이 되지 않는 것이었습니다. ㄷ(아마도...)

답변 감사드립니다.
해결하셨다니 다행입니다.
0 추천

FLAG_ACTIVITY_REORDER_TO_FRONT

플래그 이용해보심이
 

그리고 sadeva 님 말씀처럼 onResume()에 바뀐 상태값 코딩해주시면

귤반장 (140 포인트) 님이 2016년 4월 27일 답변
ㅠㅠ 이것도 안됩니다.
아무런 변화를 찾을 수 없었습니다.
답변 정말 감사드립니다. TT
FLAG_ACTIVITY_CLEAR_TOP 이걸로도 사용해보시고 이것마져도 안된다면...
좀 더 검색을 해보시는 수밖에 ㅠ
이것역시 ㅠㅠ 안되요.. 전에 해봤어요..

그리고 이건 화면이 완전 초기화 되는거라.. 되도 문제가 생겨요 ㅠ
...