0

(文字列を比較できるように編集) TextView が 1 つとボタンが 2 つあり、1 つのボタンは「月」、もう 1 つのボタンは「週」です。月、週など、押されたボタンに応じてテキストビューを変更しようとしています。初めてアクティビティを開始すると、期待どおりに「月」が表示されます。

「週」ボタンを押すと、「月」ボタンをクリックしても週ビューが表示されても、TextViewに常に「週」が表示されます。

デバッグでは、「Month」、「Month」=「true」を押すと、onCreate の値は「True」のままですが、最初の If ステートメントでは

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

その値は突然「false」になります

ボタンにテキストを設定できることは知っていますが、後でグラフを追加してデータを表示するので、onCreate を実行したいと思います。ビューを作成するたびに、どのビューが選択されているかを (文字列を比較して) チェックし、メッセージとグラフを表示します。月ビューを表示するために初めて実行します。

私は何を間違っていますか?

コードはこちら

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

            }
        });
    }
}
4

2 に答える 2

2
if (month == "true")

を使用して Java の文字列を比較することはできません==。使用equals(...)- 例...

if (month.equals("true"))
于 2014-04-18T22:01:30.850 に答える
0

最後に、私はそれを修正することができました!

まず、私を助けてくれたすべての人に感謝します。

これで、修正は非常に簡単になりました。

String month の初期化を、値のない onCreate メソッド内に移動しました。また、if ステートメントを拡張して、初めて実行された場合、またはボタンを押していない場合に値 true を割り当てました。

String month = "";

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

    }
    else{
         month = "true";
    }

また、onClick メソッドの month 変数を値なしで初期化しました

String month = "";

とてもシンプルですが、理解するのに2日かかりました!;p またよろしくお願いします

于 2014-04-19T15:46:25.850 に答える