4

私は一日中ifステートメントのブール値に問題を抱えていました、そしてそれは今私を本当に苛立たせ始めています!! ここで他のAndroidスレッドを調べましたが、解決策が機能していないようです。

私のコードは次のように始まりました:

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);
    }        
}

それから、他の言語とは違うと思ったのですが、必要なのは「=」記号が1つだけなので、次のようになりました。

    if(isSignedIn = false)
    {
   btnSignIn.setText("SignIn");
    }
    else
    {       
         btnSignIn.setText(message);
    }  

それはうまくいきませんでした、そしてそれは私がオンラインで探し始めたときです、ここで前のスレッドを見つけた後、それを次のように変更しました:

    if("false".equals(isSignedIn))
    {
   btnSignIn.setText("SignIn");
    }
    else
    {       
         btnSignIn.setText(message);
    }  

そもそもそれは私には正しく見えませんが、うまくいくことを望んでいましたが、うまくいきませんでした。

これは最初に読み込まれるMainActivityであるため、これをすべて追加したため、ifステートメントを取り出すと、アプリが読み込まれる前にクラッシュし、期待どおりに機能します。

何か案は?

4

4 に答える 4

4

これ

if (isSignedIn == false)

完全に正しいです。( と書くこともできますがif (!isSignedIn)、それはスタイルの問題です。)

の値を変更することはないためisSignedIn(少なくとも、表示されたコードでは)、常に になることに注意してくださいfalse

于 2013-01-23T16:35:04.680 に答える
3

ブール値を含むステートメントがJavaで行う方法と同じ場合、==比較する正しい方法です

コードの問題は余分なブラケットです

if (isSignedIn == false))

于 2013-01-23T16:38:17.603 に答える
3

私はあなたが単に使用できると思います

if(!isSignedIn)
{
  btnSignIn.setText("SignIn");
}
else
{       
  btnSignIn.setText(message);
}        

あなたが従った方法も正しいです。状態で追加のブラケットを使用していることを除いて、間違いは見つかりませんでしたif(isSignedIn == false))

于 2013-01-23T16:39:09.360 に答える
2

質問から逸脱するだけで、問題の可能性を指摘します。nullポインターは、テキストをまだ設定する準備ができていない可能性のあるUIオブジェクトにアクセスしていることが原因である可能性があります。

一部のAPIバージョンはあなたがしていることにうまく対応しますが、多くのデバイス/ APIコンボは、xmlの内容からonStartまで何も変更する準備ができていないことがわかりました。一般的なガイダンスは、onCreateにデータをロードすることですが、onStartまで何も開始しないでください。

于 2013-01-23T18:04:30.053 に答える