2017-06-18 4 views
0

J'essaie de définir un fond d'écran en téléchargeant une image à partir d'Internet, mais cela montre que la méthode "get()" est introuvable. Mon code: Dans ce wall_set code est le nomAffichage de la méthode get() non trouvée

wall_set.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Bitmap result=Glide.with(getApplicationContext()) 
          .load("http://www.sport-stickers.com/images/2013/CARTOON%20IRON%20ONS/Doraemon/Doraemon%20Iron%20ons%20(Wall%20Stickers)%20N3715.jpg").get(); 


        WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 
        try { 
         wallpaperManager.setBitmap(result); 
        } catch (IOException ex) { 
         ex.printStackTrace(); 
        } 
       } 
      } 
    ); 
+1

Consultez la [documentation pour Glide] (https://github.com/bumptech/glide/wiki). On dirait que vous devriez utiliser 'into()' pas 'get()'. – rundavidrun

+0

Il semble que vous manquiez d'ajouter asBitmap() voir cette réponse https://stackoverflow.com/a/27394484/7134908 –

Répondre

1

changer cette partie d'un bouton de votre code:

Bitmap result=Glide.with(getApplicationContext()) 
         .load("http://www.sport-stickers.com/images/2013/CARTOON%20IRON%20ONS/Doraemon/Doraemon%20Iron%20ons%20(Wall%20Stickers)%20N3715.jpg").asBitmap().get(); 

add "asBitmap"

you might need to add 
asBitmap().into(20, 20). // Width and height 

dans le

suivant
+0

Merci pour votre réponse monsieur mais même après avoir ajouté ". AsBitmap()", il montre la même erreur – user8027365

0

Si vous suivez l'utilisation de l'échantillon Glide, il arrive avec La méthode() appartient à l'objet java.util.concurrent.Future. Et la définition de classe future est donnée par le document officiel comme ci-dessous.

public interface Future<V> Un avenir représente le résultat d'un calcul asynchrone . Des méthodes sont fournies pour vérifier si le calcul est terminé, pour attendre son achèvement et pour récupérer le résultat du calcul. Le résultat ne peut être récupéré qu'à l'aide de la méthode lorsque le calcul est terminé, en bloquant si nécessaire jusqu'à ce qu'il soit prêt. L'annulation est effectuée par la méthode d'annulation. Des méthodes supplémentaires sont fournies pour déterminer si la tâche s'est terminée normalement ou a été annulée. Une fois le calcul terminé, le calcul ne peut pas être annulé. Si vous souhaitez utiliser un Avenir pour à des fins d'annulation mais sans fournir de résultat utilisable, vous pouvez déclarer les types du formulaire Future et renvoyer la valeur null à la suite de la tâche sous-jacente .

Exemple d'utilisation (Notez que les classes sont toutes maquillée.)

interface ArchiveSearcher { String search(String target); } 
class App { 
    ExecutorService executor = ... 
    ArchiveSearcher searcher = ... 
    void showSearch(final String target) 
     throws InterruptedException { 
    Future<String> future 
     = executor.submit(new Callable<String>() { 
     public String call() { 
      return searcher.search(target); 
     }}); 
    displayOtherThings(); // do other things while searching 
    try { 
     displayText(future.get()); // use future 
    } catch (ExecutionException ex) { cleanup(); return; } 
    } 
} 

permet de voir ce qui se passe étape par étape:

Bitmap theBitmap = Glide. 
     with(this). //in Glide class and returns RequestManager 
     load(image_url). // in RequestManager and returns RequestBuilder<Drawable> 
     asBitmap(). //in RequestBuilder and returns RequestBuilder<Bitmap> 
     submit(). // in RequestBuilder and returns FutureTarget<TranscodeType> which extends Future<> 
     get(); // this belongs to Future object which is the result of async computation 

public static RequestManager with(Context context) { 
    return getRetriever(context).get(context); 
    } 

public RequestBuilder<Drawable> load(@Nullable Object model) { 
    return asDrawable().load(model); 
    } 


    public RequestBuilder<Bitmap> asBitmap() { 
    return as(Bitmap.class).transition(new GenericTransitionOptions<Bitmap>()) 
      .apply(DECODE_TYPE_BITMAP); 
    } 

public FutureTarget<TranscodeType> submit() { 
    return submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL); 
    } 


public interface FutureTarget<R> extends Future<R>, Target<R> { 
} 

Mais plus adéquate et sûre la solution est en utilisant le rappel

Glide 
    .with(this) 
    .load(image_url) 
    .asBitmap() 
    .into(new SimpleTarget<Bitmap>(100,100) { 
     @Override 
     public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 
      //resource is the resulting bitmap 
     } 
    });