Java 无法解析符号
我尝试了这段代码(见下文),它说“无法解决符号‘customHandler’”,我是初学者,所以我还不知道如何解决这个问题。 如果你能告诉我怎么修理它,那就太棒了 我感谢你的每一个帮助Java 无法解析符号,java,android,Java,Android,我尝试了这段代码(见下文),它说“无法解决符号‘customHandler’”,我是初学者,所以我还不知道如何解决这个问题。 如果你能告诉我怎么修理它,那就太棒了 我感谢你的每一个帮助 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //------------------ //-
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//------------------
//------------------
android.os.Handler customHandler = new android.os.Handler();
customHandler.postDelayed(updateTimerThread, 0);
}
private Runnable updateTimerThread = new Runnable() {
public void run() {
//write here whatever you want to repeat
customHandler.postDelayed(this, 1000);
}
};
我正试图让一个方法每分钟从一开始就运行一次。customHandler是方法
onCreate
中的一个局部变量,因此方法run()
无法看到它
将customHandler设置为要修复的类的成员变量
//Member variable
android.os.Handler customHandler;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Assign value
customHandler = new android.os.Handler();
customHandler.postDelayed(updateTimerThread, 0);
}
private Runnable updateTimerThread = new Runnable() {
public void run()
{
//USE the value
customHandler.postDelayed(this, 1000);
}
};
您的
customHandler
对象在updateTimerThread
中不可见
尝试通过将此变量移到方法之外来更改其可见性
以下是一个例子:
android.os.Handler customHandler;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//------------------
//------------------
customHandler = new android.os.Handler();
customHandler.postDelayed(updateTimerThread, 0);
}
private Runnable updateTimerThread = new Runnable() {
public void run() {
//write here whatever you want to repeat
customHandler.postDelayed(this, 1000);
}
};
但是使用a和a可能是比递归调用处理程序上的postDelay更好的解决方案
它使代码更清晰,并确保以特定频率运行(例如每分钟一次),而您的解决方案只允许修复从运行结束到下一次运行开始之间的延迟(如果运行需要30秒,延迟为1分钟,则将每1.5分钟运行一次)
您用谷歌搜索过错误消息了吗?问题是customHandler在run()作用域中不可见。正在工作吗?你看过答案了吗?
// declare your timer
Timer basicTimer;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//------------------
//------------------
// create a Timer
basicTimer = new Timer();
// create the periodic task, here it's an anonymous class
TimerTask updateTimerThread = new TimerTask() {
public void run() {
//write here whatever you want to repeat
// no need to call postDelayed
}
};
// schedule the task to run every minutes
basicTimer.scheduleAtFixedRate(updateTimerThread, 0, 60*1000); // 1minutes = 60000 ms
}