2013-01-05 3 views
1

Android 앱에 기본 탭 + 스 와이프 템플릿을 사용 중이며 Facebook 통합을 포함하려고합니다. 내 응용 프로그램은 다음과 같습니다. MainActivity에는 두 개의 탭이 있습니다. 하나의 탭 내용에는 Facebook 로그인 버튼이 있습니다.Android에서 Fragments와 Facebook SDK 통합?

그러나 Facebook website (6 단계)의 자습서에는 활동에 사용할 코드 만 포함되어 있습니다. Fragment를 구현하는 데 문제가 있습니다. 첫 번째 탭에 해당하는 단편에서 로그인 버튼을 클릭 할 때 FB 사용자 데이터를 검색하여 FB에 로그인하려고합니다. 여기

/** 
* A fragment representing a section of the app. 
*/ 
public static class SectionFragment extends Fragment 
{ 
    /** 
    * The fragment argument representing the section number for this 
    * fragment. 
    */ 
    public static final String ARG_SECTION_NUMBER = "section_number"; 

    public SectionFragment() {} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     if(getArguments().getInt(ARG_SECTION_NUMBER) == tabSection.FACEBOOK.ordinal()) 
     { 
      View view = inflater.inflate(R.layout.fragment_facebook, container, false); 

      Button loginButton = (Button) view.findViewById(R.id.login_button); 

      loginButton.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) 
       { 
        //login to Facebook on click 
       } 
      }); 

      return view; 
     } 
     else if(getArguments().getInt(ARG_SECTION_NUMBER) == tabSection.CONTACTS.ordinal()) 
     { 
      View view = inflater.inflate(R.layout.fragment_contacts, container, false); 

      return view; 
     } 

     return null; 
    } 
} 

을 페이스 북 튜토리얼 코드입니다 :

다음은 단편 코드의

package com.firstandroidapp; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.widget.TextView; 
import com.facebook.*; 
import com.facebook.model.*; 

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

// start Facebook Login 
Session.openActiveSession(this, true, new Session.StatusCallback() { 

    // callback when session changes state 
    @Override 
    public void call(Session session, SessionState state, Exception exception) { 
    if (session.isOpened()) { 

     // make request to the /me API 
     Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

     // callback after Graph API response with user object 
     @Override 
     public void onCompleted(GraphUser user, Response response) { 
      if (user != null) { 
      TextView welcome = (TextView) findViewById(R.id.welcome); 
      welcome.setText("Hello " + user.getName() + "!"); 
      } 
     } 
     }); 
    } 
    } 
}); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
    } 

} 

이 모든 콜백 메소드는, 활동에하지 조각을 해당합니다. 단편에 넣고 버튼 클릭만으로 도움을 청합니다.

답변

2

Facebook example은 찾고있는 제품의 라인을 따라있을 수 있습니다. 이미 정의 된 UserSettingsFragment을 사용하거나 LoginButton 클래스와 직접 정의한 Fragment를 사용할 수 있습니다.

+0

확인. 하지만 여전히 주요 활동에서 savedInstanceState를 확인하고 조각을 표시해야합니다. 이것은 FragmentPagerAdapter에 관계없이 Facebook 프래그먼트를 보여줍니다. Facebook 탭으로 스 와이프 할 때마다 Facebook 활동이 시작되고있는 것처럼 행동해야합니다. – ask