2012-09-20 3 views
0

J'ai un problème avec mon application simple. Je ne veux pas coller des tonnes de code. J'ai la classe Zaladuj où je dois charger des fichiers en utilisant getResources().Android: Impossible de faire une référence statique à la méthode non statique getResources() du type Afficher

loading_screen = BitmapFactory.decodeResource(Widok.getResources(),R.drawable.loading_screen); 

Sur cette ligne, j'ai erreur:

Cannot make a static reference to the non-static method getResources() from the type View.

Je mets toutes les classes codes ici: http://www.pcyra.pl/badpanda
Ce n'est pas un site Web, il est le dossier juste avec mon projet. Je crée exemple de vue en MainActivity, L'erreur montre en classe Zaladuj en ligne 50.

+0

S'il vous plaît poster un [SSCCE] (http://www.sscce.org) qui reconstitue votre problème. –

Répondre

4

getResources() n'est pas une méthode statique. Vous avez besoin d'une instance du View (ou Widok dans votre cas) pour l'appeler. Votre meilleur pari serait d'ajouter un paramètre à votre classe Zaladuj qui accepte un Context puis utilisez getResources() sur ce point:

private Context context; 
public Zaladuj(Context con) 
{ 
    super() 
    this.context = con 
} 

private void downloadResources() 
{ 
    // 
     loading_screen = BitmapFactory.decodeResource(this.context.getResources(),R.drawable.loading_screen); 
    // 
    int count = 10; 
    for (int i = 0; i < count; i++) 
    { 
     try { Thread.sleep(1000); } catch (InterruptedException ignore) {} 
    } 
} 
+0

C'est simple non? J'ai essayé toutes les réponses ... toujours des erreurs. Pouvez-vous me montrer ce que je devrais ajouter au code? Je sais que je suis bête ... c'est la seule et unique question que je pose ici.J'essaie toujours de trouver une solution par moi-même. – rAge

+0

J'ai approfondi votre code et trouvé des choses qui n'ont pas de sens. Vous appelez 'new Zaladuj (this)' dans votre 'LoadingScreen' mais vous n'avez aucun constructeur implémenté dans votre' Zaladuj' donc vous ne devriez pas pouvoir compiler à cause de cela. Cela étant dit, si vous apportez les modifications à 'Zaladuj', j'ai déjà défini et changé votre appel à' new Zaladuj (this.getBaseContext) .execute ("studio BadPanda"); 'ça devrait marcher. – Fr33dan

+0

Thx mec! Fonctionne FINE! – rAge

2

Puisque la méthode getResources() n'est pas static, vous devrez créer pour pouvoir l'appeler, par exemple une instance de votre classe Widok :

Widok widok = new Widok(context); 
BitmapFactory.decodeResource(widok.getResources(),R.drawable.loading_screen); 
+0

Ne fonctionne pas ... ou je suis juste stupide ... – rAge

0

L'erreur vous dit clairement ce qui est wrong.You ne sont pas autorisés à l'appeler avec Widok.

Si vous êtes en classe d'activité puis appelez

BitmapFactory.decodeResource(getResources(),R.drawable.loading_screen); 

Si vous êtes en classe non-activité, vous aurez besoin contexte d'activité.

Comme si vous êtes AsyncTask alors vous écrire quelque chose comme ça

BitmapFactory.decodeResource(context.getResources(),R.drawable.loading_screen); 

Assurez-vous que vous passez contexte d'activité correcte dans le constructeur.

+0

C'est simple non? J'ai essayé toutes les réponses ... toujours des erreurs. Pouvez-vous me montrer ce que je devrais ajouter au code? Je sais que je suis bête ... c'est la seule et unique question que je pose ici. J'essaie toujours de trouver une solution par moi-même. – rAge

0

La raison pour laquelle vous obtenez cette erreur "Impossible de créer une référence statique à la méthode non statique getResources() à partir du type View." est parce que la méthode getResources() n'est pas une méthode statique. En d'autres termes, vous devez isntantiate une nouvelle Widok

Widok w = new Widok(context); 

asnd ensuite appeler les ressources sur cet objet

w.getResource(); 

** Modifier

Ceci est le code que vous mettriez dans votre classe d'activité. Vous passez le mot-clé « ce » au constructeur de Widok qui fait référence au contexte d'application

Widok w = new Widok(this); 
loading_screen = BitmapFactory.decodeResource(w.getResources(),R.drawable.loading_screen); 
+0

C'est simple non? J'ai essayé toutes les réponses ... toujours des erreurs. Pouvez-vous me montrer ce que je devrais ajouter au code? Je sais que je suis bête ... c'est la seule et unique question que je pose ici. J'essaie toujours de trouver une solution par moi-même. – rAge

+0

Regardez la modification que j'ai apportée à la réponse ci-dessus. – zabawaba99

+0

J'ai cette ligne dans ma classe MainActivity: 'final Widok widoczek = nouveau Widok (this);' Mais je ne peux pas utiliser widoczek.getResources() dans ma classe "Zaladuj" ...
c'est le point! – rAge

Questions connexes