我已经按照this教程通过jni调用在android上启动了一个url。它运行成功。
以同样的方式,我想从我的cocos2dx层显示一个toast消息,如下所示:
public static void openURL(String url) {
Toast.makeText(me,url,Toast.LENGTH_LONG).show();
}
但它崩溃了错误:Can't create handler with thread
。你知道我怎么才能正确显示它?
答案 0 :(得分:2)
尝试以下代码,这肯定会为您效劳。
首先在类文件中创建一个Runnable接口,如下所示
Runnable runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Your url string...",Toast.LENGTH_SHORT).show();
}};
然后创建一个Handler对象并调用下面的runnable接口,
Create Handler object like,
Handler handler;
initialize it like,
onCreate(){
.................
handler = new Handler();
.................
}
then call runnable whenever you want like,
handler.post(runnable);
答案 1 :(得分:0)
您无法在后台线程上运行UI内容。 您应该使用AsyncTask并将该代码放在执行前/后执行中,或者如果您只显示一个Toast,则可以在UI线程上运行它
runOnUiThread(new Runnable() {
}
答案 2 :(得分:0)
所以这是从2012年开始的。
我猜不是很多人使用cocos2d-x。 好的,你如何在cocos2d-x上做到这一点。
修改 AppActivity.java
public class AppActivity extends Cocos2dxActivity
{
private Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.activity = this;
showToast();
}
public void showToast()
{
activity.runOnUiThread(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
Toast.makeText(activity, "Hello :D", 10).show();
}
});
}
}
这在cocos2d-x版本3.x中非常好用 我测试一下当然JNI会调用该方法,这必须有效。