2011-04-01 2 views
3

2 액티비티가 최초로 불려 갔을 때 안드로이드 어플리케이션으로 2 액티 버티 사이에 프로 그래스 바를 두어 어플리케이션이 실행 상태 인 것처럼 보이고 그런 일이 끝난 것 같습니다 스레드를 통해, 아무도 이것을 알면 도와주세요 ..2 액티비티 사이에 프로 그래스 바를 추가하고 싶습니다

미리 감사드립니다.

+1

두 번째 활동에서 실제로 무엇을하고 있습니까? 더 많은 설명을하고,이 사이트는 "SMS"를위한 사이트가 아니므로 "ne1"과 같은 SMS 단어를 쓰지 마십시오. –

+0

Acctully 두 가지 활동 사이에 진행 막대를 놓고 싶습니다. 첫 번째 활동 데이터는 데이터베이스에서 표시됩니다. 두 번째 활동에는 선택한 데이터의 세부 정보가 표시됩니다. 가장 중요한 것은 두 가지 사이의 진행 표시 줄이므로 사용자가 앱이 교수형에 처해 있다고 느끼지 않는다는 것입니다. – Bhavin2887

+0

내 대답을 확인하십시오. 귀하의 요구 사항에 정확하게 부합합니다. 답변을 검토하고 구현하도록하십시오. –

답변

4

Kartik이 권리를, 그러나 나 활동 내에서의 ProgressBar를 보여 더 추가 할 수 있습니다.

백그라운드에서 데이터를 가져 오는 것과 함께 진행 표시 줄을 표시하려면 두 번째 작업에서 AsyncTask를 구현해야합니다.

private class performBackgroundTask extends AsyncTask <Void, Void, Void> 
     { 
       private ProgressDialog Dialog = new ProgressDialog(ClassName.this); 

       protected void onPreExecute() 
       { 
        Dialog.setMessage("Please wait..."); 
        Dialog.show(); 
       } 

       protected void onPostExecute(Void unused)  
       { 
        try 
        { 
         if(Dialog.isShowing()) 
         { 
          Dialog.dismiss(); 
         } 
           // do your Display and data setting operation here 
        } 
        catch(Exception e) 
        { 

        } 

      @Override 
     protected Void doInBackground(Void... params) 
      { 
      // Do your background data fetching here 
       return null; 
     } 
     } 

이 performBackgroundTask 클래스를 추가 한 후, 당신은 당신이 실행할 때마다 동일한에 대한 execute()를 호출 할 필요가 : 여기

은 예입니다.

+0

그것은 바보 같이 들리지만, 안드로이드를 처음 접한 이래로이 답변 덕분에 지금 AsyncTask를 이해했습니다! 고맙습니다! –

+0

@ ValentinoRu 내 대답이 도움이 되니 기쁩니다. 환호 .... 어쨌든 1 년 전 이상 답변되었습니다 :) –

1

안드로이드에서는 UI 스레드라고도하는 메인 스레드 만 UI 작업을 수행 할 수 있습니다. 따라서 새 스레드에서 진행률 표시 줄을 표시 할 수 없습니다. 문제에 대한 해결책으로 두 번째 활동 (빈 상태 일 수도 있음)을 표시하고 onCreate()에서 진행률 대화 상자를 표시 한 다음 활동을 과도하게 수행 할 수 있다고 생각합니다. 희망이 도움이됩니다.

1

계산을 수행하는 활동에서 ProgressDialog를 만들기 만하면됩니다.

ProgressDialog progressDialog = ProgressDialog.show(context, title, text); 

하고 작업이 가까운 완료 될 때

if(progressDialog != null && progressDialog.isShowing()) 
     progressDialog.dismiss(); 

그러나 보여 UI 스레드에서 대화 상자를 닫으십시오. AsyncTask가 아마도 이러한 경우에 대한 최상의 해결책 일 것입니다.

3

선택한 데이터의 세부 정보를 얻으려면 AsyncTask 또는 Thread를 사용해야합니다. 이를 이용하여 두 개의 활동 사이에 진행 막대 표시의 문제 ..

AsyncTask를 기본 예 해결할 수 : AsyncTask

private class LongOperation extends AsyncTask<String, Void, String> { 

@Override 
protected String doInBackground(String... params) { 
    // perform long running operation operation 
    return null; 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onPostExecute(java.lang.Object) 
*/ 
@Override 
protected void onPostExecute(String result) { 
    // execution of result of Long time consuming operation 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onPreExecute() 
*/ 
@Override 
protected void onPreExecute() { 
// Things to be done before execution of long running operation. For example showing ProgessDialog 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onProgressUpdate(Progress[]) 
*/ 
@Override 
protected void onProgressUpdate(Void... values) { 
    // Things to be done while execution of long running operation is in progress. For example updating ProgessDialog 
} 
} 
관련 문제