如何在android中按下按钮后将值更改为Activity?

时间:2014-04-18 21:53:00

标签: android android-activity android-bundle

(编辑能够比较字符串) 我有1个TextView和2个按钮,一个按钮是"月"另一个按钮"周"。 我试图将Textview相应地更改为按下的按钮,例如Month,Week 当我第一次开始活动时,它显示"月"如预期的那样。

当我按下"周"按钮始终显示"周"在TextView中,即使我点击"月"按钮仍然显示周视图。

调试说当我按下"月" ,"月" =" true",然后onCreate值仍为" True",但在第一个If语句中

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

这个价值突然变为&#34; false&#34;

我知道我可以在按钮中设置文字,但稍后我会添加图形来显示数据,所以我想在创建时完成。每次创建视图时,都会检查选择哪个视图(通过比较字符串)并显示消息和图形。第一次运行以显示月视图。

我做错了什么?

继承代码

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

            }
        });
    }
}

2 个答案:

答案 0 :(得分:2)

if (month == "true")

您无法使用==比较Java中的字符串。使用equals(...) - 示例...

if (month.equals("true"))

答案 1 :(得分:0)

最后我设法解决了它!

首先感谢你帮助我的一切。

现在修复非常简单。

我将String月的初始化移动到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 再次感谢你们