具体情况如下:主类文件:
public class LunarLander extends Activity {
private LunarView mLunarView;
private LunarThread mLunarThread; protected void onCreate(Bundle savedInstanceState) { }//想调用的方法
public void playSound(){
//something
}
}Thread文件:class LunarView extends SurfaceView implements SurfaceHolder.Callback { class LunarThread extends Thread { public void setState(){
//想在这里调用playSound()方法
}
}}请问怎么才能实现?网上查了,好像要用sendMessage,但是怎么调用一个方法呢?
可不可以直接访问到? 谢谢先线程类holdermessageasynctask
public class LunarLander extends Activity {
private LunarView mLunarView;
private LunarThread mLunarThread; protected void onCreate(Bundle savedInstanceState) { }//想调用的方法
public void playSound(){
//something
}
}Thread文件:class LunarView extends SurfaceView implements SurfaceHolder.Callback { class LunarThread extends Thread { public void setState(){
//想在这里调用playSound()方法
}
}}请问怎么才能实现?网上查了,好像要用sendMessage,但是怎么调用一个方法呢?
可不可以直接访问到? 谢谢先线程类holdermessageasynctask
能说详细点么?LunarThread构造函数里加了mHandler = handler;
但是不知道怎么能和Activity 里面的方法联系上
Handler handler = new Handler(){ @Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if(msg.arg1){
//想调用的方法
public void playSound(){
//something
}
}
}
};
public class MyThread implements Runnable{ @Override
public void run() {
// TODO Auto-generated method stub
try {
//自己设置你的状态根据需要自己定义
setState = true;
Message message = new Message();
message.arg1 = setState;
handler.sendMessage(message);// 发送消息
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
方法2.
public void setState()
{
//想在这里调用playSound()方法
LunarLander.this.playSound();
}
对,我的环境下用这个方法最简单, 就一句
((LunarLander)getContext()).stopSound();to detective2005:
你的方法应该是适用面最广的,学习了to u010495676:因为没在onCreate()中,所以好像不能用 LunarLander.this.playSound();