Après avoir affiché une Snackbar, je lance un Thread pour exécuter des actions. Je veux changer le texte en fonction de la progression actuelle dans ce sujet.Modifier le texte d'un snack dans un autre thread
je crée le Snack-bar:
private View snackbarview;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton upload = (FloatingActionButton) findViewById(R.id.upload);
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Confirm ?", Snackbar.LENGTH_SHORT)
.setAction("YES", new View.OnClickListener() {
@Override
public void onClick(View view) {
lauchMyThread();
Snackbar snackbarconfirm = Snackbar.make(view, "Working...", Snackbar.LENGTH_INDEFINITE);
snackbarconfirm.show();
snackbarview = snackbarconfirm.getView();
}
}).show();
}
});
}
je tente de mettre à jour son texte en run() de Runnable():
public void run() {
TextView tv = (TextView) snackbarview.findViewById(android.support.design.R.id.snackbar_text);
try {
tv.post(new Runnable() {
public void run() {
TextView tv = (TextView) snackbarview.findViewById(android.support.design.R.id.snackbar_text);
tv.setText("Task 1 performed.");
}
});
// and so on...
}
}
Cette méthode fonctionne pour Textview, mais les accidents avec Snack-bar:
java.lang.NullPointerException: tentative d'invoquer la méthode virtuelle 'android.view.View android.view.View.findViewById (int)' sur un ob null référence de référence
Comment le réparer?
Déplacer 'lauchMyThread();' ligne après 'snackbarview = snackbarconfirm.getView();' ligne –