2012-07-22 11 views
5

कहा जाता है मेरा एंड्रॉइड वेबव्यू फ़ंक्शन onPageFinished दो बार कहा जाता है। मुझे नहीं पता क्यों, लेकिन यह एंड्रॉइड 2.2 पर अच्छा काम करता है लेकिन जब मैं इसे 4+ पर अपग्रेड करता हूं तो यह काम नहीं करता है। नीचे दिए गए कोडएंड्रॉइड वेबव्यू फ़ंक्शन पर पेजफिनिश को दो बार

कोड से जुड़ा हुआ है

@Override 
      public void onPageFinished(WebView view, String url) { 


       if (url.startsWith(MobileConstants.PUSHPIN_CALLBACK_URL)) { 
        if (url.indexOf("code=")!=-1) { 

         String code = url.substring(url.indexOf("code=")+5); 
         Log.i ("code", code); 
         if (code != null && !code.equals("") ){ 
          view.setVisibility(View.GONE); 
          Token accessToken = service.getAccessToken(null, new Verifier(code)); 
          Log.i("access_token",accessToken.getToken()); 


          SharedPreferences settings = getSharedPreferences("access_token" , 0); 
          SharedPreferences.Editor editor = settings.edit(); 
          if(accessToken.getToken() != null) 
           editor.putString("access_token", accessToken.getToken()); 


          Intent map3 = new Intent(OAuthAccessTokenActivity.this, Dashboard.class); 

          map3.putExtra("access_token", accessToken.getToken()); 
          startActivity(map3); 
         } 


        } else if (url.indexOf("error=")!=-1) { 
         view.setVisibility(View.INVISIBLE); 

        } 

       } 
       System.out.println("onPageFinished : " + url); 

      } 

लॉग

07-22 14:29:50.523: E/AndroidRuntime(1186): FATAL EXCEPTION: main 
07-22 14:29:50.523: E/AndroidRuntime(1186): java.lang.NullPointerException 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at com.facebook.android.OAuthAccessTokenActivity$1.onPageFinished(OAuthAccessTokenActivity.java:83) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:327) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at android.os.Looper.loop(Looper.java:137) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
07-22 14:29:50.523: E/AndroidRuntime(1186):  at dalvik.system.NativeStart.main(Native Method) 
+0

कौन सा लाइन 83 है, जो शून्य सूचक निष्कासन बनाता है? – charlypu

+0

टोकन एक्सेस टोकन = service.getAccessToken (शून्य, नया सत्यापनकर्ता (कोड)); मुद्दा यह है कि एक बार मुझे कोड मिल जाता है लेकिन चीजें ठीक होने के बाद कोड प्राप्त करने के बाद मुझे टोकन तक पहुंच मिलती है, लेकिन फिर इस बार कोड को समाप्त होने पर इस फ़ंक्शन को कॉल किया जाता है और यह शून्य सूचक अपवाद – Muneeb

+0

देता है मैंने किसी को भी हल किया है मुझे इसका उत्तर कैसे देना है? – Muneeb

उत्तर

2

मैं इस समारोह

कोड

012 को onPageFinished से कोड को ले जाकर समस्या हल हो जाती
 @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url){ 

      if (url.startsWith(MobileConstants.CALLBACK_URL)) { 
       if (url.indexOf("code=") != -1) { 

        String code = url.substring(url.indexOf("code=")+5); 
        Log.i ("code", code); 
        if (code != null && !code.equals("") ){ 
         view.setVisibility(View.GONE); 
         Token accessToken = service.getAccessToken(null, new Verifier(code)); 
         Log.i("access_token",accessToken.getToken()); 


         SharedPreferences settings = getSharedPreferences("access_token" , 0); 
         SharedPreferences.Editor editor = settings.edit(); 
         if(accessToken.getToken() != null) 
          editor.putString("access_token", accessToken.getToken()); 

         access = accessToken.getToken(); 

         Intent map3 = new Intent(OAuthAccessTokenActivity.this, Dashboard.class); 

         map3.putExtra("access_token", accessToken.getToken()); 
         startActivity(map3); 
         return true; 
        } 


       } else if (url.indexOf("error=")!=-1) { 
        view.setVisibility(View.INVISIBLE); 
        return false; 
       } 

      } 
      System.out.println("onPageFinished : " + url); 

      return super.shouldOverrideUrlLoading(view, url); 

     } 
0

मुझे एक ही समस्या थी, लेकिन मुझे केवल प्रगति पट्टी को रोकने की आवश्यकता थी। मैंने "हल" किया है, यह पेज स्टार्ट पर विधि के अंदर प्रगति पट्टी फिर से शुरू कर रहा है। यह एक अच्छा समाधान नहीं है, लेकिन मेरे मामले में पर्याप्त था।

संबंधित मुद्दे