我正在检索像这样的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_MULTIUPLIER
和BLACK_AND_WHITE_MULTIUPLIER
的值。有可能吗?
答案 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方法可以访问变量标题并获得它的值。