如何在Java中使用另一种方法中的一个方法的变量(android)

时间:2014-03-06 06:20:16

标签: java android methods scope

我正在检索像这样的TextView的值

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calculation);
    TextView heading = (TextView) findViewById(R.id.paper_name);
    ......
}

我在同一个班级中有另一种方法

@Override
public void onClick(View v) {   
    int BLACK_AND_WHITE_MULTIUPLIER = 4200;
    int COLOR_MULTIUPLIER = 6400;
    switch (v.getId()) {
        case R.id.btCalculate:
        int multiplier = rbColor.isChecked() ? COLOR_MULTIUPLIER : BLACK_AND_WHITE_MULTIUPLIER;
        int column = Integer.parseInt((String) spColumn.getSelectedItem());
        int inch = Integer.parseInt((String) spInch.getSelectedItem());
        tvAmount.setText((multiplier * column * inch) + "");
        break;
    }
}

我想根据我从onCreate方法获得的标题的值来设置COLOR_MULTIUPLIERBLACK_AND_WHITE_MULTIUPLIER的值。有可能吗?

4 个答案:

答案 0 :(得分:1)

移动TextView heading;以使其成为类变量而不是局部变量,然后在整个班级中都可以访问它。

然后可以在onCreate中对其进行初始化,并在onClick中阅读和更新

答案 1 :(得分:1)

在班级宣布你的TextView ......

TextView heading;

protected void onCreate(Bundle savedInstanceState)
    {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculation);

        heading = (TextView) findViewById(R.id.paper_name);
        heading.setText("something");

            ......

然后使用onClick()方法访问它,如下所示......

@Override
public void onClick(View v)
{   
     int BLACK_AND_WHITE_MULTIUPLIER = 4200;
     int COLOR_MULTIUPLIER = 6400;
    switch (v.getId())
    {
        case R.id.btCalculate:

            int multiplier = 0;

            if (heading.getText().toString.equals("something")) {

                multiplier = COLOR_MULTIUPLIER;

            } else {

                multiplier = BLACK_AND_WHITE_MULTIUPLIER;

            }

            //int multiplier = rbColor.isChecked() ? COLOR_MULTIUPLIER
            //        : BLACK_AND_WHITE_MULTIUPLIER;
            int column = Integer.parseInt((String) spColumn
                    .getSelectedItem());
            int inch = Integer.parseInt((String) spInch.getSelectedItem());
            tvAmount.setText((multiplier * column * inch) + "");
            break;
    }
}

答案 2 :(得分:1)

就像我在comment中所说的那样,您只需要将heading变为属于整个对象的变量,而不仅仅是onCreate方法。您可以通过以下方式执行此操作。

public class MyActivity extends Activity {

    TextView heading;  //Declared outside of onCreate

    protected void onCreate(Bundle savedInstanceState) {
        heading = (TextView) findViewById(R.id.paper_name); //Assigned inside of onCreate
    }
}

然后在onClick

中可以访问该变量
public void onClick(View v) {
    heading.getText(); //Or whatever you need to use it for
}

答案 3 :(得分:1)

在onCreate方法之外,即在类级别声明TextView标题。在onCreate内部为它赋值,而onClick方法可以访问变量标题并获得它的值。