2014年7月2日 星期三

Android 開發 (五十二) facebook login + Nest Fragment

當使用facebook login,出現偶發無法login 並且查詢status為 opening的時候,就必須注意是否已經踏入了facebook api的坑中。

facebook login api 必須在每個state 中做事情例如

    public void onStart() {       
        Session.getActiveSession().addCallback(this);
    }

    public void onStop() {
        Session.getActiveSession().removeCallback(this);
    }

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
     Session.getActiveSession().onActivityResult((Activity)context, requestCode, resultCode, data);
    }

當我們在Nest Fragment的時候(ex :TabHost+ Viewpager),onActivityResult可能會沒有被呼叫到,
這就會造成login失敗,最好的方法就是不要在Nest Fragment裡做 facebook login,否則就必須想辦法在ParentFragment (通常為TabHost的那個Fragment)中呼叫 子fragment 的onActivityResult
不過這個方法也不能100%的避掉問題,有時候 ParentFragment的 onActivityResult也不會被呼叫到。

所以回到最原始的解法,當必須在Nest Fragment中呼叫login時,還是偷偷開一個fragment或Activity做login的動作吧..

沒有留言:

張貼留言