0

その例外は、却下されなかったダイアログから発生することを私は知っています。

これがアプリケーションをクラッシュさせるアクティビティです(次のコードはアクティビティの主要部分であり、他のコードはほんの小さな関数です(ダイアログなし)

 public void facebookLogin()
{
    shareAppPreferences = new AppPreferences(getApplicationContext());
     facebook =  new Facebook("something");//((GlobalVars)getApplicationContext()).facebook;

     String access_token = shareAppPreferences.getAccessToken();
     Long expires = shareAppPreferences.getAccessExpires();
     Log.d("MyTag","token:" +access_token);
     if(access_token != null) {
         facebook.setAccessToken(access_token);
     }
     if(expires != 0) {
         facebook.setAccessExpires(expires);
     }
     /*
      * Only call authorize if the access_token has expired.
      */
     if(!facebook.isSessionValid()) {
         Log.d("MyTag","In Authorize");
          facebook.authorize(this, new String[] {"publish_stream", "email"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {
              public void onComplete(Bundle values) {

                  shareAppPreferences.saveAccessToken(facebook.getAccessToken());
                  Log.d("MyTag","face token: " +facebook.getAccessToken());
                  shareAppPreferences.saveAccessExpires(facebook.getAccessExpires());

              }

              public void onFacebookError(FacebookError e) {
                Toast.makeText(getApplicationContext(), "onFacebookError", Toast.LENGTH_SHORT).show();
            }

            public void onError(DialogError e) {
                Toast.makeText(getApplicationContext(), "onError", Toast.LENGTH_SHORT).show();
            }
            public void onCancel() {

          }
          });
     }
     new AccessKeyTask().execute("someURL");
     Intent intent = new Intent(this,MainActivity.class);
     Log.d("MyTag", "starting activity");
     startActivity(intent);

}

Logcatの例外部分は次のとおりです。

    11-22 18:32:06.484: I/MapActivity(19687): Handling network change notification:CONNECTED
11-22 18:32:06.488: E/MapActivity(19687): Couldn't get connection factory client
11-22 18:32:06.707: E/WindowManager(19687): Activity com.inturnex.allaround.Login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4055d560 that was originally added here
11-22 18:32:06.707: E/WindowManager(19687): android.view.WindowLeaked: Activity com.inturnex.allaround.Login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4055d560 that was originally added here
11-22 18:32:06.707: E/WindowManager(19687):     at android.view.ViewRoot.<init>(ViewRoot.java:260)
11-22 18:32:06.707: E/WindowManager(19687):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
11-22 18:32:06.707: E/WindowManager(19687):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
11-22 18:32:06.707: E/WindowManager(19687):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
11-22 18:32:06.707: E/WindowManager(19687):     at android.app.Dialog.show(Dialog.java:241)
11-22 18:32:06.707: E/WindowManager(19687):     at com.facebook.android.Facebook.dialog(Facebook.java:839)
11-22 18:32:06.707: E/WindowManager(19687):     at com.facebook.android.Facebook.startDialogAuth(Facebook.java:368)
11-22 18:32:06.707: E/WindowManager(19687):     at com.facebook.android.Facebook.authorize(Facebook.java:231)
11-22 18:32:06.707: E/WindowManager(19687):     at com.inturnex.allaround.Login.facebookLogin(Login.java:147)
11-22 18:32:06.707: E/WindowManager(19687):     at com.inturnex.allaround.Login.onCreate(Login.java:55)
11-22 18:32:06.707: E/WindowManager(19687):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-22 18:32:06.707: E/WindowManager(19687):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1628)
11-22 18:32:06.707: E/WindowManager(19687):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1680)
11-22 18:32:06.707: E/WindowManager(19687):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-22 18:32:06.707: E/WindowManager(19687):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
11-22 18:32:06.707: E/WindowManager(19687):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 18:32:06.707: E/WindowManager(19687):     at android.os.Looper.loop(Looper.java:130)
11-22 18:32:06.707: E/WindowManager(19687):     at android.app.ActivityThread.main(ActivityThread.java:3703)
11-22 18:32:06.707: E/WindowManager(19687):     at java.lang.reflect.Method.invokeNative(Native Method)
11-22 18:32:06.707: E/WindowManager(19687):     at java.lang.reflect.Method.invoke(Method.java:507)
11-22 18:32:06.707: E/WindowManager(19687):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
11-22 18:32:06.707: E/WindowManager(19687):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
11-22 18:32:06.707: E/WindowManager(19687):     at dalvik.system.NativeStart.main(Native Method)
11-22 18:32:07.402: D/PhoneWindow(19687): couldn't save which view has focus because the focused view android.widget.RelativeLayout@40593b28 has no id.
11-22 18:32:07.402: D/PhoneWindow(19687): couldn't save which view has focus because the focused view android.widget.RelativeLayout@40593b28 has no id.
4

2 に答える 2

3

セッションが有効でない場合は、if ステートメントを入力し、Facebook ログイン コードを実行して、ダイアログを開きます。コードの進行を止めていないので、Facebook 認証が完了するまで実行されるべきではありませんが、このブロックは引き続き実行されます。

 new AccessKeyTask().execute("someURL");
 Intent intent = new Intent(this,MainActivity.class);
 Log.d("MyTag", "starting activity");
 startActivity(intent);

completeLoginこのコードをまたは何かと呼ばれる関数に入れ、その呼び出しをあなたに追加し、また呼び出すセッション条件にonCompleteも追加することをお勧めします。elsecompleteLogin

于 2012-11-22T16:46:07.557 に答える
0

147行目で何が起こっていますか?11-22 18:32:06.707: E/WindowManager(19687): at com.inturnex.allaround.Login.facebookLogin(Login.java:147)

私の疑いは、エラーの 1 つが呼び出されToast、UI スレッドが閉じた後に表示しようとしているということです。

使ってみてrunOnUIThread()

于 2012-11-22T16:45:25.433 に答える