2009-10-08 4 views
2

방금 ​​바보 같은 접근 방식을 시도하고 그것은 내 응용 프로그램을 크래시 ... 기본적으로 세 가지 활동을 포함하는 세 개의 탭이있는 활동이 있습니다. 각 탭은 인터넷에서 다운로드 한 xml 파일로부터 입력을받습니다. 다 잘되고 있지만 내 애플 리케이션을 시작할 때 XML 파일을 다운로드하고 거기에 "대기"시간이있다.Android : 데이터로드 및 활동 알림? 또한 실패한 접근법을 문서화했습니다!

나는 스플래시 화면을 추가하여이 문제를 해결할 수있었습니다. 그것은 아름다워 보이지만 문제는 두 번째 탭을 클릭 할 때 여전히 네트워크에서 목록을 가져와야하므로 지금보기 흉한 것처럼 보입니다. 목록을 표시하기 전에 기다립니다. 그래서 저는 XML 파일을 다운로드하는 AsyncTask를 디자인했습니다. 내 주요 활동에서, 나는 두 개의 작업을 처음에 생성하고 매개 변수로 URL과 의도를 보냅니다. 그리고 탭 안에서 시작되는 활동들 안에서, 저는 wait()를 사용합니다. AsyncTask 내부에서 다운로드가 끝나면 notify()를 사용하여 Intent에 알립니다. 이것은 추락했다! 당연히, 나는 그것을 작동하기 위하여 예기하지 않았다, 그러나 다만 시도하고 싶었다 :) 나는 이것이 실패하는 이유에 관해서 의견을 얻을 수있다 그래야 그것을 쓰거나 다른 사람이 이것에 그들의 시간을 낭비하는 것을 막을 수있다. ...

이제는 많은 사람들이 탭 안의 "대기"시간 문제에 직면하게 될 것이라고 확신합니다. 어떻게 해결할 수 있습니까? 화면을 어둡게하고 일련의 토스트를 표시하거나 탭 내부에 진행 표시기를 표시하거나 xml 파일을 미리 가져 오는 중 생각할 것입니다 ... 어떻게 달성 할 수 있는지에 대한 단서가 없습니다 ... 모두 생각?

답변

2

신용 : 마크. 감사!

public class Approach extends ListActivity { 

    ProgressDialog myProgressDialog = null; 
    ListView myList = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     myList = getListView(); 

     myProgressDialog = ProgressDialog.show(getParent(),  
       "Please wait...", "Doing extreme calculations...", true); 
     //Do some calculations 
      myProgressDialog.dismiss(); 

    } 
} 

는 (일부 UI 요소를 업데이트 등) 몇 가지 문제가 있습니다

문제 : 응용 프로그램이 몇 가지 작업

접근을하고 바쁜 때 진행률 표시기를 표시합니다. 필요한 경우 계산을 수행하기 위해 다른 스레드를 생성 할 수 있습니다. android-showing-indeterminate-progress-bar-in-tabhost-activity

1

ProgressDialog.

또는 데이터가 준비 될 때까지 탭을 android:visibility="gone"으로 만든 다음 visible으로 만듭니다. 잠시 동안 어떤 종류의 그래픽로드 (아마도 RotateAnimation가 적용됨)를 보여줍니다.

+0

감사합니다 ...해서 ProgressDialog가했던 트릭 : 당신이에 관심이 있다면

또한, 당신은 너무 매트의 접근 방식에 관심이있을 수 있습니다. 다른 누군가가 원할 경우에 대비하여 상세한 답변을 게시 할 것입니다 ... – Legend