簡體   English   中英

如果用booleans android聲明

[英]If statement with booleans android

我整天都在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);
    }        
}

然后我有一個想法,它使它不像其他語言,我只需要一個“=”符號所以我這樣做:

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

這不起作用,當我開始尋找在線時,在找到之前的線程后,將其更改為以下內容:

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

現在,這對我來說並不合適,但希望它會起作用,但事實並非如此。

因為這是它首先加載的MainActivity,但是因為我添加了所有這些,所以應用程序崩潰之前它甚至會在我取出它按預期工作的if語句時加載。

有任何想法嗎?

這個

if (isSignedIn == false)

是完全正確的。 (你也可以寫if (!isSignedIn) ,但那只是風格問題。)

請注意,由於您永遠不會更改isSignedIn的值(至少在您向我們顯示的代碼中沒有),因此它始終為false

如果使用布爾值的語句與在Java中執行它的方式相同,則==是正確的比較方式

您的代碼中的問題是額外的括號

if (isSignedIn == false) )

我想你可以簡單地使用

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

您遵循的方式也是正確的我沒有發現任何錯誤,除非您在條件中使用額外的括號if(isSignedIn == false))

只是為了偏離問題,但指出可能是你的問題,你的空指針可能是因為你正在訪問一個可能還沒有准備好它的文本集的UI對象。

雖然一些API版本可以很好地處理你正在做的事情,但我發現許多設備/ API組合根本沒有准備好從xml中的內容改為onStart。 一般指導是在onCreate中加載數據,但 onStart之前不會開始執行任何操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM