Préface, je suis étudiant et jolie nouvelle à Java / Programmation. Je suis très nouveau dans le cadre Android. Je veux que 5 dés ImageView soit pour faire du vélo sur une boucle pour apparaître comme si elles sont roulées. Je crois que le problème principal que j'ai eu est que mes changements d'interface utilisateur se produisent en dehors de Oncreate (). Existe-t-il un moyen de combler la maadactivité et une classe Java distincte?
MainActivity P>
attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
4 Réponses :
Je pense que le problème est que vous essayez de faire des changements d'interface utilisateur en dehors du fil principal et que vous ne pouvez pas faire cela sur Android, essayez d'utiliser RunonUthread à la place, comme l'exemple ci-dessous:
runOnUiThread(new Runnable() { @Override public void run() { } }
Il crée un gestionnaire pour le boucleur principal et le postait à cela. C'est équivalent à runonuthread
Avez-vous essayé de définir un contexte? Je pense que cela aiderait ...
Essayez quelque chose comme le contexte de contexte. P>
context.ImageView.setimageresource p>
ou p>
this.ImageView.setimageresource < / p>
juste une supposition p>
mise à jour: Utilisez ceci comme exemple P>
} p>
les chaînes (r.string.xxx), vous devez créer dans res ou simplement les faire par vous-même. Idem pour l'image obj. P> p>
Je viens de donner ça un aller. Plus particulièrement MainActivity.ImageView.setimageresource. IDE ne lance aucune erreur, mais à la course, le logcat me donne un: tentative d'invoquer la méthode virtuelle 'android.content.res.resources android.content.context.getresources ()' sur une référence d'objet null
J'ai suivi votre code et le mine sous-tiré dans. Je reçois toujours une exception NullPoinger lorsque mon code devient MainActivity.ImageView.setimageresource (R.Drawable.die #); code> Ma sortie de construction me donne également des erreurs : Erreur: la variable non statique imageView ne peut pas être référencée à partir d'un contexte statique que j'ai d'autres questions ASWELL. Pourquoi avez-vous déclaré votre variable dans votre statique de MainActivity? Voulez-vous aussi clarifier votre phrase "mais"?
L'erreur que vous affichez est surveille lorsque l'objet n'est pas initialisé. Tout d'abord, vous initiez vos objets imageView.L'étraction que vous afficher n'est pas une erreur de thread. P>
Je pensais un peu ça. Je me lance juste pour le faire répandre pour que mon application fonctionnera. Lorsque IAM regarde le logcat, je peux voir que la logique du jeu est au travail. L'image de matrice aléatoire est choisie et les cas de commutation fonctionnent, mais lorsqu'il frappe SettimagerSources, il échoue. À ce stade, mon code est différent par rapport au code que j'ai posté ci-dessus.
J'ai compris mon exception nulle point. Mon Findview (pour l'imageviews) a été incorrectement défini. Je les ai essayé de chercher R.Drawable.imgs. Il fallait être un r.id.imageview.
Cependant, je suis en train de rencontrer un nouveau problème dans lequel les images ne sont pas cyclistes. Je suppose que malade fait plus de creuser dans ça. Je suis juste content d'avoir fait des progrès après 40 heures de frapper ma tête sur ce problème. Vous trouverez ci-dessous le code de ma solution. P>
package com.example.bernh.cptshipmatecrew; import android.annotation.SuppressLint; import android.os.Handler; import android.widget.ImageView; import java.util.Random; public class ShipDriver extends MainActivity implements Runnable { int dieIndex; Random random; int rolled; ImageView imageView1; Handler mainHandler = new Handler(); public ShipDriver(int dieIndex) { this.dieIndex = dieIndex; //why do we declare this. Is this shipdriver obj or MainObj } @SuppressLint("ResourceType") @Override public void run() { Random random = new Random(); rolled = random.nextInt(6) + 1; for (int i = 0; i < 30; i++) { try { Thread.sleep(500); } catch(Exception e) { e.printStackTrace(); } if (dieIndex == 0) { mainHandler.post(new Runnable() { @Override public void run() { switch (rolled) { case 1: MainActivity.imageView1.setImageResource(R.drawable.die1); break; case 2: MainActivity.imageView1.setImageResource(R.drawable.die2); break; case 3: MainActivity.imageView1.setImageResource(R.drawable.die3); break; case 4: MainActivity.imageView1.setImageResource(R.drawable.die4); break; case 5: MainActivity.imageView1.setImageResource(R.drawable.die5); break; case 6: MainActivity.imageView1.setImageResource(R.drawable.die6); break; } } }); } // if (dieIndex == 1) { // mainHandler.post(new Runnable() { // @Override // public void run() { // switch (rolled) { // case 1: // MainActivity.imageView.setImageResource(R.drawable.die1); // case 2: // MainActivity.imageView.setImageResource(R.drawable.die2); // case 3: // MainActivity.imageView.setImageResource(R.drawable.die3); // case 4: // MainActivity.imageView.setImageResource(R.drawable.die4); // case 5: // MainActivity.imageView.setImageResource(R.drawable.die5); // case 6: // MainActivity.imageView.setImageResource(R.drawable.die6); // // } // } // // }); // } // if (dieIndex == 2) { // mainHandler.post(new Runnable() { // @Override // public void run() { // switch (rolled) { // case 1: // MainActivity.imageView.setImageResource(R.drawable.die1); // case 2: // MainActivity.imageView.setImageResource(R.drawable.die2); // case 3: // MainActivity.imageView.setImageResource(R.drawable.die3); // case 4: // MainActivity.imageView.setImageResource(R.drawable.die4); // case 5: // MainActivity.imageView.setImageResource(R.drawable.die5); // case 6: // MainActivity.imageView.setImageResource(R.drawable.die6); // // } // } // // }); // } // if (dieIndex == 3) { // mainHandler.post(new Runnable() { // @Override // public void run() { // switch (rolled) { // case 1: // MainActivity.imageView.setImageResource(R.drawable.die1); // case 2: // MainActivity.imageView.setImageResource(R.drawable.die2); // case 3: // MainActivity.imageView.setImageResource(R.drawable.die3); // case 4: // MainActivity.imageView.setImageResource(R.drawable.die4); // case 5: // MainActivity.imageView.setImageResource(R.drawable.die5); // case 6: // MainActivity.imageView.setImageResource(R.drawable.die6); // // } // } // // }); // } // if (dieIndex == 4) { // mainHandler.post(new Runnable() { // @Override // public void run() { // switch (rolled) { // case 1: // MainActivity.imageView.setImageResource(R.drawable.die1); // case 2: // MainActivity.imageView.setImageResource(R.drawable.die2); // case 3: // MainActivity.imageView.setImageResource(R.drawable.die3); // case 4: // MainActivity.imageView.setImageResource(R.drawable.die4); // case 5: // MainActivity.imageView.setImageResource(R.drawable.die5); // case 6: // MainActivity.imageView.setImageResource(R.drawable.die6); // // } // } // // }); // } } } }
Duplicail possible de Qu'est-ce qu'une nullpoinpoincerexception et comment puis-je Fixez-le?