程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 Java 中为 Activity 添加标志大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 Java 中为 Activity 添加标志?

开发过程中遇到在 Java 中为 Activity 添加标志的问题如何解决?下面主要结合日常开发的经验,给出你关于在 Java 中为 Activity 添加标志的解决方法建议,希望对你解决在 Java 中为 Activity 添加标志有所启发或帮助;

我不是 Java 开发人员,但我需要为我的应用程序实现一些 AndroID 原生模块,这是第三方库。

我调用@ReactMethod 来处理付款。

@ReactMethod
voID processpayment(Boolean showtransactionResult,CallBACk successCallBACk,CallBACk errorCallBACk) {
    Log.d("message String",String.valueOf("Payment processing started "));
    ReactApplicationContext context = getReactApplicationContext();
    transactionCallBACk callBACk = null; //?
    Activity currentActivity = getCurrentActivity();
    Log.d("Current activity",String.valueOf(currentActivity));
    try {
        makeSALE(context,showtransactionResult,callBACk);
        successCallBACk.invoke("CallBACk : payment successful");
    } catch (IllegalVIEwOperationException E){
        errorCallBACk.invoke(e.getmessage());
    }
}

这个 Java 函数应该在应用程序前面打开支付窗口。

voID makeSALE(ReactApplicationContext context,Boolean showtransactionResult,transactionCallBACk callBACk){
    Map<String,String> extras = new HashMap<>();
    extras.put("KEY_1","Value 1");
    extras.put("KEY_2","Value 2");
    PaymentSystem.geTinstance().makeSALE(context,true,extras,new transactionCallBACk() {
        @OverrIDe
        public voID onsuccess(String s,@Nullable @org.jetbrains.Annotations.Nullable Map<String,String> map) {
            //SALE successful
            //data is transaction key
            //extras is the Map passed in makeSALE()
        }

        @OverrIDe
        public voID onFailure(PaymentSystemException e,String> map) {
            //SALE Failed
        }
    });
}

但我收到此错误消息

E/unkNown:reactNative: Exception in native call
androID.util.AndroIDRuntimeException: Calling startActivity() from outsIDe of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    at androID.app.ContextImpl.startActivity(ContextImpl.java:1018)
    at androID.app.ContextImpl.startActivity(ContextImpl.java:994)
    at androID.content.Contextwrapper.startActivity(Contextwrapper.java:403)
    at androID.content.Contextwrapper.startActivity(Contextwrapper.java:403)
    at digital.paynetics.paymentSystem.paymentSystemSdkmock.launchCallBACkmockActivity(:5)
    at digital.paynetics.paymentSystem.paymentSystemSdkmock.makeSALE(:2)
    at com.myapp.paymentSystemModule.makeSALE(paymentSystemModule.java:118)
    at com.myapp.paymentSystemModule.processpayment(paymentSystemModule.java:82)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.facebook.react.brIDge.JavaMethoDWrapper.invoke(JavaMethoDWrapper.java:372)
    at com.facebook.react.brIDge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:151)
    at com.facebook.react.brIDge.queue.NativeRunnable.run(Native Method)
    at androID.os.Handler.handleCallBACk(Handler.java:938)
    at androID.os.Handler.dispatchmessage(Handler.java:99)
    at com.facebook.react.brIDge.queue.messageQueueThreadHandler.dispatchmessage(messageQueueThreadHandler.java:27)
    at androID.os.Looper.loop(Looper.java:223)
    at com.facebook.react.brIDge.queue.messageQueueThreadImpl$4.run(messageQueueThreadImpl.java:226)
    at java.lang.Thread.run(Thread.java:923)

我在 Internet 上找到了解决方案,该解决方案可以轻松地将标志添加到 Activity 中的 Intent。但我不知道该怎么做。我想 Intent 是第三方库的一部分。

请帮帮我。如果只是一些 Java 问题,很抱歉转储问题。

解决方法

尝试使用 getCurrentActivity 代替 getApplicationContext 打开新活动。

例如

@H_617_7@makeSALE(currentActivity,showtransactionResult,callBACk);

大佬总结

以上是大佬教程为你收集整理的在 Java 中为 Activity 添加标志全部内容,希望文章能够帮你解决在 Java 中为 Activity 添加标志所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。