2017-07-19 84 views
-1

我想知道是否有人可以幫我解決我在onCreate方法中使用if語句時遇到的問題。我正在製作一個按鈕,將信息傳遞給另一個活動,然後該活動將根據我在onCreate方法代碼中設置的if語句顯示信息。現在我正在四處尋找關於「如果在onCreate方法中聲明如何操作?」的信息和關於它的found this question。所以,我更改我的代碼以使其與代碼中使用的代碼類似,但我一直在我的平板電腦上收到「應用程序停止工作」錯誤消息。所以,我想知道是否有人可以幫助我,告訴我是否編碼有問題,或者如果我需要以不同的方式將信息傳遞給新的活動?或者如果我需要添加任何東西到我錯過的代碼?如何在新活動的onCreate方法中執行if語句?

預先感謝您!

我的代碼

主要活動:(中的onclick方法的代碼)

if (select == 2) { 
      Intent ShowIntent = new Intent(MainActivity.this, results.class); 
      ShowIntent.putExtra("SN", select); // int 
      ShowIntent.putExtra("IN1", IN1T); // string 
      ShowIntent.putExtra("D1", D1T); // string 
      ShowIntent.putExtra("Qty1", M1); // int 
      ShowIntent.putExtra("U1", U1T); // string 
      ShowIntent.putExtra("IN2", IN2T); // string 
      ShowIntent.putExtra("D2", D2T); //string 
      ShowIntent.putExtra("Qty2", M2); // int 
      ShowIntent.putExtra("U2", U2T); // string 
      startActivity(ShowIntent); 
     } else { 
      Toast.makeText(getApplicationContext(), "Not working...", Toast.LENGTH_LONG).show(); 
     } 

新活動(更新代碼 - 7/19 5:06)

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.results); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     ValueS = (TextView) findViewById(R.id.txtselectv); 
     welcome = (TextView) findViewById(R.id.txtWelcome); 
     start =(TextView) findViewById(R.id.txtStarted); 
     INR = (TextView) findViewById(R.id.txtIN1R); 
     DR = (TextView) findViewById(R.id.txtD1R); 
     QTYR = (TextView) findViewById(R.id.txtQty1R); 
     UR = (TextView) findViewById(R.id.txtU1R); 
     INR2 = (TextView) findViewById(R.id.txtIN2R); 
     DR2 = (TextView) findViewById(R.id.txtD2R); 
     QTYR2 = (TextView) findViewById(R.id.txtQty2R); 
     UR2 = (TextView) findViewById(R.id.txtU2R); 

     Bundle extras = getIntent().getExtras(); 
     select = extras.getInt("SN", 0); 
     passSN = String.valueOf(select); 
     ValueS.setText(passSN); 

     if (passSN.equals("2")){ 

      INR.setVisibility(View.VISIBLE); 
      DR.setVisibility(View.VISIBLE); 
      QTYR.setVisibility(View.VISIBLE); 
      UR.setVisibility(View.VISIBLE); 
      INR2.setVisibility(View.VISIBLE); 
      DR2.setVisibility(View.VISIBLE); 
      QTYR2.setVisibility(View.VISIBLE); 
      UR2.setVisibility(View.VISIBLE); 

      pIN1 = extras.getString("IN1"); 
      pD1 = extras.getString("D1"); 
      pU1 = extras.getString("U1"); 
      pIN2 = extras.getString("IN2"); 
      pD2 = extras.getString("D2"); 
      pU2 = extras.getString("U2"); 

      INR.setText(pIN1); 
      DR.setText(pD1); 
      pM1 = extras.getInt("Qty1", 0); 
      passM1 = String.valueOf(pM1); 
      QTYR.setText(passM1); 
      UR.setText(pU1); 
      INR2.setText(pIN2); 
      DR2.setText(pD2); 
      pM2 = extras.getInt("Qty2", 0); 
      passM2 = String.valueOf(pM2); 
      QTYR2.setText(passM2); 
      UR2.setText(pU2); 
     } 

     } 

    } 

任何想法?

更新:我的問題是解決了(回答後解釋)

+1

你的日誌說什麼? – Vyacheslav

+0

不知道日誌說什麼,維亞切斯拉夫。有沒有辦法檢查日誌,所以我可以報告我發現的內容? – Mike

+0

使用android studio來閱讀android日誌:stacktrace等。 – Vyacheslav

回答

0

問題解決了

我測試我的應用程序在Android Studio中的另一臺計算機上。我將能夠找到一個虛擬設備來工作,我發現了一個Java錯誤。我不記得確切,但它必須做一些我在Oncreate方法和我所謂的工具欄和我設置@style/AppTheme而不是@style/NoActionBar,因爲我有@style/AppTheme。它會導致我的新活動出現錯誤,並強制應用程序崩潰。所以,我做了改變,它的工作原理。

非常感謝大家的代碼建議。當我查看不同的代碼建議時,我發現了其他幾個錯誤,並希望感謝大家的建議。如果每個人都不會建議查看我的代碼並在這裏或那裏進行更改,我將永遠不會看到或發現這些錯誤。此外,如果您改爲我在this error is here上找到的文章。

再次感謝大家的幫助!

0

試試這個在您的新活動

if (passSN.equals("2")){ 
    //your code 
} 
+0

ValueS看起來像是一個textview,並將它等同於一個字符串「2」應該會引發錯誤。 –

+0

謝謝Jayagopai指出。我忙於試圖獲取代碼設置並檢查它以使代碼正常工作,我不認爲這種錯誤。我將不得不嘗試「.getText()。toString()。equals(」2「)」,看看是否有效。再次感謝您指出這一點。 – Mike

+0

這是我的快樂:) –

0

我將繼續併發布我的假設。這可能是錯誤的,完全沒問題。但根據您所描述的症狀,聽起來就像您的活動因配置更改(將設備從縱向旋轉到橫向)而被殺死並重新創建。

如果這樣的話,那麼Android有可能再次開始您的活動,而沒有您第一次發送的任何捆綁數據。

首先,你需要做一個null檢查:

Bundle extras = getIntent().getExtras(); 

其次,你需要重寫onSavedInstanceState和onRestoreInstance狀態,以幫助重新填充您的活動。

最後我相信你是不必要地把一個int轉換爲一個字符串,然後檢查它是否相等。

if (passSN.equals("2")){ 

可以變成

if (select == 2) { 
    //do something here 
}