【发布时间】:2014-03-07 16:52:02
【问题描述】:
我正在尝试在 C++ 端的 Java 方法调用上显示祝酒词 我设法调用了该方法,甚至得到了字符串,但是 Toast 没有工作我已经尝试了几乎所有的上下文和所有
C++ 方面
JavaVMAttachArgs args = { JNI_VERSION_1_6, NULL, NULL };
vm->AttachCurrentThread( &env, &args );
activityConstructor = env->GetMethodID(activity, "<init>", "()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();
}
我在消息中输入字符串值,但这个 Toast 没有显示任何内容
任何想法将不胜感激..谢谢
【问题讨论】:
-
你是从主 UI 线程调用 toast 方法吗?
-
不,但我有来自活动的上下文...
-
没关系,你不能从主线程以外的任何线程修改 UI,这就是为什么不显示,只需从 runOnUIThread 或 Handler 调用 Toast.make...它会显示...
-
hmm...我在上面的代码中更改了我的 toast 方法...但它仍然无法正常工作..你能看到其中的任何问题..
-
您收到日志消息了吗?
标签: android c++ qt java-native-interface