android jni toast,在Android中通过发送字符串从c + + JNI在qt中显示Toast

博主在尝试从C++通过JNI调用Java方法来显示Android的Toast,尽管能够成功调用方法并传入字符串,但Toast并未正常显示。问题可能在于非主线程更新UI。Java方法中已使用runOnUiThread来尝试解决,但仍然无效。讨论集中在如何在正确线程中调用Toast以使其能正常显示。
摘要由CSDN通过智能技术生成

我想显示在从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或处理程序,它会显示... –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值