Java Question onActivityResult: wi is null

somed3v3loper

Well-Known Member
Licensed User
Longtime User
Hi all ,
I am trying to wrap rave on their documentation the result is passed via onactivityresult
I tried both methods described in this thread https://www.b4x.com/android/forum/threads/java-guide-using-onactivityresult.7297/ but could not get the result
I am getting onActivityResult: wi is null
 

somed3v3loper

Well-Known Member
Licensed User
Longtime User
Post the class code.
B4X:
@ActivityObject
public class raveandroidwrapper  {
    private BA ba;   
    private String eventName;
    private IOnActivityResult ion;
    public void Initialize(BA ba , String EventName ) {
        _initialize(ba,  EventName);
        
    }


                
                
    @Hide
    public void _initialize(final BA ba,final String EventName) {
        this.ba = ba;
        this.eventName = EventName.toLowerCase(BA.cul);
        
        }
        public SubAccount createSubAccount(String vendorRef,String vendorRatio){
            return new SubAccount(vendorRef,vendorRatio);
        }
        
        public void initializePayment(long amount,String country,String currency,String email, String fName, String lName, String narration, String publicKey, String encryptionKey, String txRef,boolean acceptMpesaPayments,  boolean acceptAccountPayments,boolean acceptCardPayments ,boolean  acceptAchPayments,boolean acceptGHMobileMoneyPayments ,boolean acceptUgMobileMoneyPayments,boolean acceptZmMobileMoneyPayments, boolean acceptRwfMobileMoneyPayments,boolean acceptBankTransferPayments,boolean isPreAuth,boolean showStagingLabel,boolean shouldDisplayFee,boolean onStagingEnv ,     anywheresoftware.b4a.objects.collections.List subAccounts){
        
        List<Object> list = subAccounts.getObject();
        List<SubAccount> listba = new ArrayList<>() ;
        for (Object element : list) {
            
            listba.add((SubAccount) element);
        }
            
            new RavePayManager(ba.activity).setAmount(amount)
                    .setCountry(country)
                    .setCurrency(currency)
                    .setEmail(email)
                    .setfName(fName)
                    .setlName(lName)
                    .setNarration(narration)
                    .setPublicKey(publicKey)
                    .setEncryptionKey(encryptionKey)
                    .setTxRef(txRef)
                    .acceptMpesaPayments(acceptMpesaPayments)
                    .acceptAccountPayments(acceptAccountPayments)
                    .acceptCardPayments(acceptCardPayments)
                    .acceptAchPayments(acceptAchPayments)
                    .acceptGHMobileMoneyPayments(acceptGHMobileMoneyPayments)
                    .acceptUgMobileMoneyPayments(acceptUgMobileMoneyPayments)
                    .acceptZmMobileMoneyPayments(acceptZmMobileMoneyPayments)
                    .acceptRwfMobileMoneyPayments(acceptRwfMobileMoneyPayments)
                    .acceptBankTransferPayments(acceptBankTransferPayments)
                    .onStagingEnv(onStagingEnv)
                    .setSubAccounts(listba)
                    .isPreAuth(isPreAuth)
                    .showStagingLabel(showStagingLabel)
                    .shouldDisplayFee(shouldDisplayFee)
                    .initialize();
                    
                    

                 ion = new IOnActivityResult() {

                @SuppressWarnings("unchecked")
                @Override
                public void ResultArrived(int resultCode, Intent intent) {
                    
                    
                    IntentWrapper iw = new IntentWrapper();
                    iw.setObject(intent);
                    ba.raiseEvent(ba, eventName + "_resultarrived", true, iw);
                    }
                    //

                
                };
                    try {
                          
                         ba.startActivityForResult(ion, null);
                      } catch (NullPointerException npe) {
                         //required...
                      }
                      BA.Log(BA.ObjectToString(ba));
                      BA.SharedProcessBA sba = ba.sharedProcessBA;
                      try {
                         Field f = BA.SharedProcessBA.class.getDeclaredField("onActivityResultCode");
                         f.setAccessible(true);
                         //BA.Log("sba"+f.getInt(sba));
                        // int requestCode = f.getInt(sba) - 1;
                        
                      } catch (Exception e) {
                         throw new RuntimeException(e);
                      }
                    
                    

        }

    
    }
Uncommenting int requestCode = f.getInt(sba) - 1; resulted in
B4X:
ndroidwrapperpackage.raveandroidwrapperinitializePayment (java line: 161)
java.lang.RuntimeException: java.lang.NullPointerException: null receiver
    at smm.raveandroidwrapperpackage.raveandroidwrapper.initializePayment(raveandroidwrapper.java:161)
    at smm.rave.main._activity_create(main.java:344)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:196)
    at smm.rave.main.afterFirstLayout(main.java:104)
    at smm.rave.main.access$000(main.java:17)
    at smm.rave.main$WaitForLayout.run(main.java:82)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NullPointerException: null receiver
    at java.lang.reflect.Field.getInt(Native Method)
    at smm.raveandroidwrapperpackage.raveandroidwrapper.initializePayment(raveandroidwrapper.java:158)
    ... 13 more
 

Johan Schoeman

Expert
Licensed User
Longtime User
Cookies are required to use this site. You must accept them to continue using the site. Learn more…