Donc, dans onCreate, j'essaie de changer l'image d'un en-tête de vue de navigation avec un autre que je peux accéder via une URL. J'utilise un AsyncTask pour ce faire:Modifier l'image de l'en-tête de menu en utilisant AsyncTask
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sidebar_menu);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
View headerView = navigationView.getHeaderView(0);
User u = MainProvider.sharedInstance().getCurrentUser(this);
TextView usernameText = (TextView) headerView.findViewById(R.id.usernameText);
ImageView profilePicture = (ImageView)headerView.findViewById(R.id.profilePicture);
String profilePictureUrl = u.getSettings().get("profile_picture").getAsString();
new convertUrlToBitmap().execute(profilePictureUrl);
profilePicture.setImageBitmap();
}
Et mon AsyncTask ressemble à ceci:
class convertUrlToBitmap extends AsyncTask<String, Void, Bitmap> {
private Exception exception;
protected Bitmap doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
connection.disconnect();
return myBitmap;
} catch (IOException e) {
// Log exception
return null;
}
}
protected void onPostExecute(Bitmap myBitmap) {
// TODO: check this.exception
// TODO: do something with the feed
}
}
Ce que je ne parviens pas à comprendre comment utiliser ce que je reçois de ma tâche dans la méthode setImageBitmap:
profilePicture.setImageBitmap()
Merci à tous pour votre temps et vos efforts!
convertUrlToBitmap est une classe séparée ou juste son intérieur Activity ..? –
Dans mon activité – Alphonse