范围错误实例化setContentView Java上方的对象

时间:2013-07-03 09:23:47

标签: java android scope

我试图在按钮事件处理程序中实例化3个对象:

    // Instantiate class objects
    final TimePicker timePicker = (TimePicker) findViewById(R.id.tp_selTime);
    final CheckBox cb_filterTime = (CheckBox) findViewById(R.id.cb_filterByTime);
    final DatePicker datePicker = (DatePicker) findViewById(R.id.dp_filterTime);

我从名为MainActivity.java的{​​{1}}开始活动。显然我需要先做FilterTimeActivity.javasuper.onCreate,当我将上述3个对象移动到setContentView但在public class FilterTimeActivity extends Activity {之外时它会崩溃。

有没有办法正确定位这个,所以我可以从这个方法访问这些对象:

OnCreate()

从按钮侦听器调用(而不是从另一个方法调用)

1 个答案:

答案 0 :(得分:2)

只需将它们声明为Activity的成员变量(onCreate()之外)。

将这些放在onCreate()之外,位于班级的顶部:

TimePicker timePicker;
CheckBox cb_filterTime;
DatePicker datePicker;

然后在onCreate()

timePicker = (TimePicker) findViewById(R.id.tp_selTime);
cb_filterTime = (CheckBox) findViewById(R.id.cb_filterByTime);
datePicker = (DatePicker) findViewById(R.id.dp_filterTime);

它们在外面宣布但在内部初始化。你可以在任何地方使用它们。