私はasyntaskを持っていて、進行中の更新でテキストをTextViewに設定しましたが、これは正常に機能しますが、画面を回転させ、textviewをリセットして ""(これは初期値です)を設定します。更新後、新しいfindviewbyid( r.id.tvProgreso); テキストビューを更新しますが、テキストは同じになります。
これは私のonCreateメソッドです:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_incio);
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {
ActionBar actionBar = getActionBar();
actionBar.hide();
}
contexto = getApplicationContext();
datos = new ArrayList<Integer>();
recojeDatosDeSesion(savedInstanceState);
adaptador = new AdaptadorImagenes(contexto);
if (getLastNonConfigurationInstance() != null) {
adaptador = (AdaptadorImagenes) getLastNonConfigurationInstance();
}
// Layout
etEmail = (EditText) findViewById(R.id.etEmail);
etPassword = (EditText) findViewById(R.id.etPassword);
tvProgreso = (TextView) findViewById(R.id.tvProgreso);
listaHorizontalImagenes = (Gallery) findViewById(R.id.galeria);
listaHorizontalImagenes.setGravity(Gravity.LEFT);
listaHorizontalImagenes.setAdapter(adaptador);
listaHorizontalImagenes.setSelection(0);
btnDescargar = (Button) findViewById(R.id.btnDescargar);
clickDescargar = new OnClickListener() {
@Override
public void onClick(View v) {
if (!descargaActiva) {
email = etEmail.getText().toString();
password = etPassword.getText().toString();
if (validaDatos(email, password)) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
new DescargaFotos().execute();
descargaActiva = true;
Toast.makeText(contexto, "Comienza la descarga.", Toast.LENGTH_SHORT).show();
tvProgreso.setText("Descargando fotos..");
}
} else {
Toast.makeText(contexto, "Descarga en proceso", Toast.LENGTH_LONG).show();
}
}
};
if (descargaActiva)
btnDescargar.setOnClickListener(null);
else
btnDescargar.setOnClickListener(clickDescargar);
}
およびasyntaskのprogressUpdate
@Override
protected void onProgressUpdate(Integer... progreso) {
// Actualizo el progreso
progresoImagenes = progreso[0];
actualizaTexto(progreso[0]);
adaptador.addItem(progreso[0]);
}
private void actualizaTexto(Integer progreso) {
tvProgreso = (TextView) findViewById(R.id.tvProgreso);
tvProgreso.setText(progreso.toString() + " de " + numeroDeFotos + " fotos.");
}
デバッグすると、正しいテキストを含むtextviex.settextが表示されますが、これは変更されません。