无法在onClick中更改变量

时间:2012-07-20 20:30:11

标签: android button onclick

我正在尝试使用int打开不同的图表。我希望这个int在按下按钮时更改值,但它不会改变。这是我的代码:

public class PatientDemographics extends Activity
{
    private GraphicalView mChartView;
    int num = 1;
    int tabnum = 0;
    int finalnum;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabviews);

        LinearLayout ll = (LinearLayout) findViewById(R.id.buttons);

        Button button1 = new Button(this);
        button1.setText("Disease Type");
        ll.addView(button1);
        button1.setOnClickListener( new View.OnClickListener()
        {
            public void onClick(View v)
            {
                num = 1;
                Intent i = new Intent(PatientDemographics.this, TabHelper.class);
                i.putExtra("num", tabnum);
                startActivity(i);   
            }
        });

        Button button2 = new Button(this);
        button2.setText("Gender");
        ll.addView(button2);
        button2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                num = 2;
                Intent i = new Intent(PatientDemographics.this, TabHelper.class);
                i.putExtra("num", tabnum);
                startActivity(i);
            }
        });

        Button button3 = new Button(this);
        button3.setText("Age at Diagnosis");
        ll.addView(button3);
        button3.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                num = 3;
                Intent i = new Intent(PatientDemographics.this, TabHelper.class);
                i.putExtra("num", tabnum);
                startActivity(i);
            }
        });

        Button button4 = new Button(this);
        button4.setText("Treatment Status");
        ll.addView(button4);
        button4.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                num = 4;
                Intent i = new Intent(PatientDemographics.this, TabHelper.class);
                i.putExtra("num", tabnum);
                startActivity(i);
            }
        });     
    }
}

请忽略tabnum。它用于确定所有内容的选项卡,它们是相同的。另外,我最初用xml创建了按钮,但每个标签需要不同数量的按钮,我不知道如何做到这一点,所以我只是用代码制作它们。

您可以看到我将num初始化为1,然后尝试在onClick方法中更改它,但它永远不会更改。如果您需要更多信息,请与我们联系。

修改

protected void onSaveInstanceState(Bundle outState)
{
      outState.putInt("num", num);
      super.onSaveInstanceState(outState);
}

然后在onCreate:

    super.onCreate(savedInstanceState);
    if(savedInstanceState != null)
    {
        num = savedInstanceState.getInt("num");
    }

2 个答案:

答案 0 :(得分:1)

您启动与按钮点击结果相同类型的新Activity。 在新Activity中,变量初始化为1。 如果您想在新Activity中使用新值,则应该从Intent获取该值,并在onCreate()的{​​{1}}方法中分配变量。

您应该将此类内容添加到Activity

onCreate()

答案 1 :(得分:0)

我认为你可能没有通过调试器验证是否正在更改num。因为我在我的代码中做的与你完全一样。我建议在更改num的行上设置一个断点,看看num是否有变化。我假设开始活动导致你丢失num值。