0

Я хочу переключиться с одного действия на другое, когда индикатор выполнения достигнет максимума.onPostExecute() не исполняется

активность

public class A extends Activity { 
private ProgressBar progressBar; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.mainpage); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.main); 
    progressBar = (ProgressBar) findViewById(R.id.prog_bar);  

    new AsyncTask<Void, Integer, Integer>(){ 

     @Override 
     protected Integer doInBackground(Void... params) { 
      int progressStatus = 0; 
      while (progressStatus < 5000) { 
       progressStatus++; 
       publishProgress(progressStatus); 
       try { 
        Thread.sleep(1); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 

      } 
      return 1; 
     } 

     @Override 
     protected void onProgressUpdate(Integer... values) { 
      progressBar.setProgress(values[0]); 
     } 

     protected void onPostExecute(Integer result) { 
      final Intent mainIntent = new Intent(A.this,B.class); 
      startActivity(mainIntent); 
      finish(); 
      return; 
     } 
    }.execute(); 
} 

}

Но в этом коде метод onPostExecute() не execting ... Я застрял с параметрами AsyncTask также ... Когда я запускаю это код в режиме отладки возвращается из блока try

try { Thread.sleep (1); } catch (InterruptedException e) { e.printStackTrace(); }

XML для этого класса

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="5dp" 
android:background="@drawable/eggstation" 
tools:context=".A" > 

<TextView 
    android:id="@+id/dutech" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="-5dp" 
    android:text="@string/text_data" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="#00cccc" 
    android:textSize="25sp" /> 

<TextView 
    android:id="@+id/devby" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/dutech" 
    android:layout_marginBottom="5dp" 
    android:gravity="center" 
    android:text="Developed by:" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="#3399cc" 
    android:textSize="28sp" /> 

<ProgressBar 
    android:id="@+id/prog_bar" 
    style="@android:style/Widget.ProgressBar.Horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="1dp" 
    android:max="100" 
    android:layout_alignParentTop="true" /> 

+1

каких-либо исключений или что-нибудь у Gt? log cat plz .. действия r, указанные в манифесте – user1140237

+0

Никакое исключение или что-либо другое, а также атрибуты также указаны в menifest ... –

+0

в async-задаче onPostexecute метод является переопределяющим методом, но в вашем коде я не могу его найти. –

ответ

0

ваш AsyncTask код не имеет никаких проблем!

проблема может быть с начальной активности

поэтому попробуйте следующий код в onPostExecute()

final Intent mainIntent = new Intent(A.this,B.class); 
startActivity(mainIntent); 
finish(); 
return; 
0

Попробуйте следующий фрагмент кода

protected void onPostExecute(Integer result) { 
     startActivity(new Intent(A.this,B.class)); 
     return; 
    } 

Также sleep метод принимать long типа в качестве аргумента, попробуйте после

Thread.sleep(1000); 

регистр Также ваш B активность в Manifest.xml подобно follwing

<application> 
... 
... 
<activity 
     android:name="[package_name].B" 
     android:label="@string/class_b" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="[package_name].MainActivity" /> 
</activity> 
</application 
+0

naaaaaa ..... не работает B уже зарегистрирован и Я сделал Thread.sleep (1000) ... В режиме отладки, когда он достигает инструкции return ... Он достигает первой строки кода (там, где объявлен пакет) .. Его не выполняется onPostExecute() ... –

Смежные вопросы