【发布时间】:2013-04-30 07:39:16
【问题描述】:
在我的应用程序中,我尝试设置一个超时函数,我无法在单独的类中调用 handler 方法。
我的超时课程
public class Timeout_function {
private Handler mHandler;
Activity activity;
public Timeout_function(Activity activity,Handler mHandler) {
super();
this.activity = activity;
this.mHandler = mHandler;
}
Runnable myTask = new Runnable() {
@Override
public void run() {
Toast.makeText(activity, "Test", 1000).show();
mHandler.postDelayed(this, 1000);
}
};
// just as an example, we'll start the task when the activity is started
public void onStart() {
mHandler.postDelayed(myTask, 1000);
}
// at some point in your program you will probably want the handler to stop
// (in onStop is a good place)
public void onStop() {
mHandler.removeCallbacks(myTask);
}
}
主类 在主类中我以这种方式调用该方法,但它在运行时显示错误,
Timeout_function timeout = new Timeout_function(this, mHandler);
timeout.onStart();
如何调用主类中的方法。有知道的请帮我解决这个问题。
【问题讨论】:
-
你的“处理函数”是什么意思,因为你的
mHandler是一个对象。另外,为什么你认为你不能调用它?另外,你的架构是什么?应该与Handler交互的代码在哪里? -
@ClassStacker 如何启动与处理程序的交互。
-
我相信你已经从一个活动中提取了这段代码,作为
Activity生命周期的一部分,onStart会被你调用。它没有这样做,所以现在你必须自己打电话给onStart。