我想显示在从C++方面的Java方法调用吐司 我设法调用该方法,甚至获得字符串,但吐司不工作我已经尝试过一切与上下文和所有在Android中通过发送字符串从c + + JNI在qt中显示Toast
C++侧
JavaVMAttachArgs args = { JNI_VERSION_1_6, NULL, NULL };
vm->AttachCurrentThread(&env, &args);
activityConstructor = env->GetMethodID(activity, "", "()V");
jobject object = env->NewObject(activity, activityConstructor);
toastID = env->GetMethodID(activity, "toast", "(Ljava/lang/String;)V");
qDebug() << "Moving";
jstring message1 = env->NewStringUTF("This comes from jni.");
qDebug()<< "Test" << message1;
env->CallVoidMethod(object, toastID, message1);
Java方面
public void toast(String message){
messageData = message;
Log.d(TAG, message);
new Thread()
{
public void run()
{
esActivity.this.runOnUiThread(new Runnable(){
public void run(){
Log.d("Message in UIThread", messageData);
Toast.makeText(context, messageData, Toast.LENGTH_SHORT).show();
}
});
}
}.start();
}
我在消息刚开的字符串值,但这吐司不显示任何
任何想法,将不胜感激..thanks
+0
你是否从主UI线程调用了toast方法? –
+0
不,但我有活动的上下文... –
+0
没关系,你不能修改除主线程以外的任何线程的UI,这就是为什么不显示,只需调用Toast.make ...从runOnUIThread或处理程序,它会显示... –