2014-04-18 68 views
0

(編輯可以比較字符串) 我有1個TextView和2個按鈕,其中一個按鈕是「Month」,另一個按鈕是「Week」。 我試圖改變Textview相應的按鈕按下例如月,周 當我第一次啓動活動時,它顯示「月」按預期。如何在Android中按下按鈕後將值更改爲Activity?

之後當我按下「Week」按鈕時,總是在TextView中顯示「Week」,即使我點擊「Month」按鈕仍然顯示周視圖。

調試說,當我按「月」,「月」 =「true」,那麼的onCreate值仍是「真」,但在第一次如果語句

if (extras != null){   // <-------here is still true 
    month = extras.getString(month); // <-------here is false 
} 

是看重突然變向「false」

我知道我可以在按鈕中設置文字,但後來我會添加圖形來顯示數據,所以我想做onCreate。每次創建視圖時,都會檢查選擇哪個視圖(通過比較字符串)並顯示消息和圖形。第一次運行顯示Month視圖。

我在做什麼錯了?

繼承人的代碼

package com.isma.report; 



import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class report1 extends Activity{ 


    TextView viewtime; 
    String month = "true"; 
    Intent starterIntent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.report); 

     starterIntent = getIntent(); 


     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      month = extras.getString("month"); 

     } 

     // Set the text 
     viewtime = (TextView) findViewById(R.id.StudentReportText); 
     if (month.equals("true")){ 
      viewtime.setText("Monthly View"); 
     } 

     if{month.equals("false")){ 
      viewtime.setText("Weekly View"); 
     } 


     //Month View Button 
     Button bMonth = (Button) findViewById(R.id.monthincome); 
     bMonth.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 


       starterIntent.putExtra(month, "true"); 
       startActivity(starterIntent); 
       finish(); 
      } 
     }); 

     //Week View Button 
     Button bWeek = (Button) findViewById(R.id.weekincome); 
     bWeek.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       starterIntent.putExtra(month, "false"); 
       startActivity(starterIntent); 
       finish(); 

      } 
     }); 
    } 
} 
+0

你能確認的ID(monthincome和monthincome)的按鈕 – Siva

+0

他們monthincome和weekincome 機器人:ID = 「@ + ID/monthincome」 機器人:ID =「@ + ID/weekincome「 – Isma

+0

某些地方您的訪問對象爲空調試它,並找到你在哪裏得到空對象。 – Siva

回答

0

最後我設法修復它!首先感謝所有你幫助我。

現在修復非常簡單。

我將String月的初始化移動到了onCreate方法的內部,沒有任何值。 如果是第一次運行或者沒有按下任何按鈕,我還擴展了if語句以賦值true。

String month = ""; 

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    month = extras.getString(month); 

    } 
    else{ 
     month = "true"; 
    } 

我也初始化任何值在onclick方法

String month = ""; 

很簡單月份變量,但我花了2天,弄清楚! ,P 再次感謝球員

2
if (month == "true") 

不能使用==在Java中比較字符串。使用equals(...) - 示例...

if (month.equals("true")) 
+0

它崩潰就像那條線:if(month.equals(「true」)) – Isma

+0

爲什麼它會得到錯誤的值呢?如果我用true來初始化?它按下任何按鈕時傳遞錯誤值? – Isma

+0

關鍵是'if(month ==「true」)'永遠不會評估爲真實結果,並且您有一個總是執行的'else'塊。如果它使用'equals(...)'崩潰,那麼你的代碼中有另一個問題 - 在這種情況下編輯你的問題併發布你的logcat。 – Squonk

相關問題