1

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");
    }
4

2 に答える 2

1

Activityボタンのクリックの結果として、同じタイプの新しいものを開始します。newActivityでは、変数は 1 に初期化されます。 new で新しい値を使用する場合は、Activityから取得し、 のメソッドでIntent変数を割り当てる必要があります。onCreate()Activity

次のようなものを に追加する必要がありますonCreate()

num = (int)this.getIntent().getExtras().get("num");
于 2012-07-20T20:57:20.127 に答える
0

num がデバッガー経由で変更されていることを確認していない可能性があると思います。私は私のコードであなたとまったく同じことをしているからです。num を変更する行にブレークポイントを設定し、num が変更されるかどうかを確認することをお勧めします。start アクティビティが原因で num 値が失われていると思います。

于 2012-07-20T20:56:59.970 に答える