Si l'instruction avec les booléens android
J'ai eu un problème avec un Booléen dans une instruction if toute la journée et ça commence vraiment à m'irriter maintenant!! J'ai regardé d'autres Android threads ici et les solutions ne semblent pas t de travail.
Mon code commence comme ceci:
public class MainActivity extends Activity
{
public static boolean isSignedIn = false;
public final static String USERNAME_MESSAGE = "com.example.libnoise.MESSAGE";
Button btnSignIn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSignIn = (Button) findViewById(R.id.btnSignIn);
Intent intent = getIntent();
String message = intent.getStringExtra(PlayZone.USERNAME_MESSAGE);
if(isSignedIn == false))
{
btnSignIn.setText("SignIn");
}
else
{
btnSignIn.setText(message);
}
}
Ensuite, j'ai eu une pensée qui fait qu'il n'est pas comme les autres langues et je n'ai besoin que d'un signe "=" j'ai donc eu comme ceci:
if(isSignedIn = false)
{
btnSignIn.setText("SignIn");
}
else
{
btnSignIn.setText(message);
}
Qui n'a pas fonctionné et c'est quand j'ai commencé à regarder en ligne, après la découverte d'un précédent thread ici changé suivantes:
if("false".equals(isSignedIn))
{
btnSignIn.setText("SignIn");
}
else
{
btnSignIn.setText(message);
}
Maintenant que n'est pas bon pour moi, en premier lieu, mais espérait qu'elle allait travailler et il n'a pas.
Comme c'est le MainActivity chargement pourtant depuis que j'ai ajouté à tout cela, l'application se bloque avant même la charge quand je sors de l'instruction si il fonctionne comme prévu.
Des idées?
Comme c'est l'activité Principale, il n'aura pas l'intention de message lorsque vous avez initialement ouvert depuis le launcher
dans l'AVD c'est "Unfortunatley, LibNoise a arrêté" Dans le logCat il a de nombreux et que la première est "Java.Lang.RuntimeExetption: Impossible d'instancier l'activité ComponentInfo{com.exemple.libnoise.MainActivity}: java.le gnl.NullPointerExecption"
Je vois lorsque je l'ai ouverte, je suis en train de lire quelque chose de bof une autre activité qui, je suppose, aux yeux de l'application n'a pas exsist encore?
En effet. Chaque activité est commencé avec une intention, même à partir de l'écran de lancement (voir le manifeste). Le lanceur ne pas mettre des messages dans ces intentions, mais d'autres activités, peut - donc, si vous entrez votre activité principale à partir d'un autre point de votre application (une autre activité) (ce qui est tout à fait acceptable), il peut être ajouté une
extra
de sorte que votre utilisation est très bien, aussi longtemps que vous ne vous attendez à rien d'être là lorsque vous ouvrez à partir du lanceur.OriginalL'auteur Defterniko | 2013-01-23
Vous devez vous connecter pour publier un commentaire.
je pense que vous pouvez simplement utiliser
le chemin que vous avez suivi est également correct je n'ai pas trouvé une erreur dans l'exception que vous êtes à l'aide de support supplémentaire dans la condition
if(isSignedIn == false))
NullPointerException
.En fait le DRAPEAU a obtenu une valeur ici. Alors, comment NullPointerException surviennent? j'ai donné la réponse sur la base de code fourni
OriginalL'auteur edwin
Ce
est parfaitement correcte. (Vous pouvez également écrire
if (!isSignedIn)
, mais c'est juste une question de style.)Noter que, depuis vous de ne jamais changer la valeur de
isSignedIn
(au moins pas dans le code que vous nous avez montré), il sera toujoursfalse
.OriginalL'auteur Heinzi
Si les déclarations avec les booléens sont même la façon dont vous le faire en Java,
==
est la bonne façon de comparerLe problème dans votre code est un support supplémentaire
if (isSignedIn == false)
)
==
n'est pas la bonne façon de comparer surtoutString
... 🙂Oui pour la Chaîne de == et .l'égalité sont différents, je parlais uniquement sur les
Prudent avec vos casquettes.
Boolean
etboolean
sont pas de même, et le résultat de l' == à chaque fois, il sera très différent.OriginalL'auteur Mayank Mehta
Juste de s'écarter de la question, mais de pointer ce qui est peut-être votre problème, votre pointeur null peut-être que vous accédez à un objet d'INTERFACE utilisateur qui peut très bien ne pas être prêt à avoir du texte.
Bien que certaines versions de l'API à faire face très bien avec ce que vous faites, j'ai trouvé que beaucoup de/API combos ne sont tout simplement pas prêt à avoir de quelque chose de changé à partir de ce qui est dans le xml jusqu'en démarrage. L'orientation générale est de charger les données dans onCreate, mais ne pas démarrer faire rien jusqu'à ce que onStart.
OriginalL'auteur Zulaxia