마스터Q&A
접속유지
가입하기
안드로이드 Q&A
최근 질문
미답변 질문
태그
사용자
질문하기
마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다.
안드로이드펍
에서 운영하고 있습니다. [
사용법
,
운영진
]
인기있는 태그
초보어플개발
(3427)
안드로이드스튜디오
(2664)
안드로이드-초보어플개발
(1333)
안드로이드-스튜디오
(1086)
도와주세요-
(995)
이미지
(970)
listview
(866)
리스트뷰
(844)
오류
(805)
레이아웃
(693)
fragment
(675)
webview
(670)
asynctask 사용후 액티비티멈춤
0
추천
A라는 액티비티가 호출되면 온크리트하면서 B라는 asynctask를 실행합니다..
문제가.. B라는 asynctask까지는 정상적으로 실행이되서 작업을 완료하는데 그후에
액티비티상에 존재하는 버튼이 들어먹지를 않습니다.. 뭔가 잘못 한 건가요
도와주세요
안드로이드
asynctask
android
button
익명사용자
님이
2014년 6월 23일
질문
Please
log in
or
register
to add a comment.
답변 달기
·
글에 소스 코드 보기 좋게 넣는 법
·
질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
답변이 채택되거나 답변에 댓글이 달리면 이메일로 알려드립니다:
답변이 채택되거나 댓글이 달리면 이메일로 알려드립니다
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면
로그인
하거나 혹은
가입
하세요.
1개의 답변
0
추천
채택된 답변
B라는 어싱크 타스크의 온포스트익스큐트에서 기존의 A 액티비티를 덮어버리는 뷰가 활성화가 되던지
아님 거기서 A액티비티상의 존재하는 버튼들을 무용지물 시켜버리는 무언가가 존재하던지..
이건 소스를 보기 전에 대답해드리기 힘드네요. 오류코드도 없고.
쭈쭈총각
(
17,750
포인트)
님이
2014년 6월 23일
답변
온포스트익스큐트 사용중인데 A액티비티를 덮어버리는 뷰가 활성화 된다는부분 조금만 더 자세히 알려주세요.. 오류코드는 없습니다. 단지 화면이 무반응이 될뿐이라서..
흠...;; 말그대로 A액티비티 위에 새로운 View가 떠있게되면 뒤에 있는 A액티비티 버튼들의 이벤트가 활성화 되지 못합니다. 즉 반응을 할 수 없게 되는거죠. 소스 보여주세요. 그럼 알 수 있을 것 같은데요.
온포스트익스큐트 부분에서 뷰생성해 쓰고있습니다 해당부분 소스입니다.
@Override
protected void onPostExecute(String result) {
LinearLayout bodyWapper = (LinearLayout)findViewById(R.id.diagResultLayout);
LinearLayout diagInfomation = (LinearLayout)findViewById(R.id.diagInfomation);
LinearLayout diagSubMenu = (LinearLayout)findViewById(R.id.diagSubMenu);
TextView diagCount = (TextView)findViewById(R.id.count);
ArrayList<DiagResultListBean> listViewItem = null;
int diagSize = 0;
for (Map.Entry<String, List<DtcHistoryBean>> dtcHistoryBean : diagResultMap.entrySet()) {
createTitleView(bodyWapper, diagResultMap.get(dtcHistoryBean.getKey()).get(0).getPartName());
listViewItem = new ArrayList<DiagResultListBean>();
List<DtcHistoryBean> historyBeans = diagResultMap.get(dtcHistoryBean.getKey());
if (historyBeans.size() > 1) {
diagSize += historyBeans.size();
}
for (DtcHistoryBean historyBean : historyBeans) {
DiagResultListBean diagResultListBean = new DiagResultListBean(dtcHistoryBean.getKey(), historyBean.getDispDtcCode(), historyBean.getMessage(), historyBean.getReason(), historyBean.getCheckLocation());
listViewItem.add(diagResultListBean);
}
createListView(bodyWapper, listViewItem);
}
diagCount.setText(diagSize + " ");
diagSubMenu.setVisibility(View.VISIBLE);
diagInfomation.setVisibility(View.VISIBLE);
super.onPostExecute(result);
}
제가 앞서 예상한대로 그대로 코딩이 되어 있으시네요. 어싱크타스크를 실행하고 결과가 성공적으로 실행되므로서 메인스레드(UI 스레드에서) onPostExcute()에서 위 소스가 실행이 되는데요.
아 주 정확한건 모르겠지만 메인 액티비티 위에
타이틀뷰와 리스트뷰가 생성이 되고, 별도로 diagSubMenu와 diagImfomation이 visible 되네요.
이정도 정황을 미루어 볼 떄, 이전 액티비티위에 저러한 뷰들이 덮혀져서
이전 액티비티 버튼의 클릭 이벤트 핸들러가 반응을 할 수 없는 지경인 것 같습니다.
해결 하자고 하신다면 겹치는 뷰가 없게 하던가 여기서 무언갈 처리하고 다시 뒤로 돌아가는 형식을 하셔야 합니다. 별도의 뷰를 이렇게 호출 할때에는 기본적으로 이전 액티비티의 이벤트를 할 수 없다는걸 가정하고 설계를 하셔야 합니다.
일반적으로 액티비티에서 팝업을 뛰웠을때 팝업 외에는 무언갈 할 수 없는거와 똑같습니다.
참고해서 한번 해보도록 하겠습니다 고맙습니다.
Please
log in
or
register
to add a comment.
...