0

(编辑为能够比较字符串)我有 1 个 TextView 和 2 个按钮,一个按钮是“月”,另一个按钮是“周”。我试图根据按下的按钮相应地更改 Textview,例如月、周当我第一次启动活动时,它会按预期显示“月”。

当我按下“周”按钮后,总是在 TextView 中显示“周”,即使我点击“月”按钮仍然显示周视图。

调试说当我按下“Month”时,“Month”=“true”,然后 onCreate 的值仍然是“True”,但在第一个 If 语句中

if (extras != null){         // <-------here is still true
    month = extras.getString(month);  // <-------here is 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")

您无法使用==. 使用equals(...)- 示例...

if (month.equals("true"))
于 2014-04-18T22:01:30.850 回答
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 再次感谢大家

于 2014-04-19T15:46:25.850 回答