2017-07-07 46 views
0
public class MainActivity extends AppCompatActivity 
     implements LoginSocial.OnFragmentInteractionListener, Updates.OnFragmentInteractionListener,View.OnClickListener,GoogleApiClient.OnConnectionFailedListener { 
    private SignInButton sign; 
    private GoogleApiClient googleApiClient; 
    static final int Set_Ringtone = 0; 
    static final int PICK_CONTACT_REQUEST = 1; 
    private static final int RC_SIGN_IN = 9001; 
    private String TAG; 
    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 

     setContentView(R.layout.activity_main); 
     initializeControls(); 
     loginWithFB(); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 


     sign = (SignInButton)findViewById(R.id.sign_in_button); 

     sign.setOnClickListener(this); 


    } 
    @Override 
    public void onClick(View view) { 

     switch (view.getId()) 

     { 
      case R.id.sign_in_button: 
       sign(); 
       break; 
     } 
    } 

    private void sign() { 
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient); 
     startActivityForResult(signInIntent, RC_SIGN_IN); 
    } 



    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

    } 



    private void handleResult(GoogleSignInResult result) { 

     Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
     if (result.isSuccess()) { 
      // Signed in successfully, show authenticated UI. 
      GoogleSignInAccount acct = result.getSignInAccount(); 
      updateUI(true); 
     } else { 
      // Signed out, show unauthenticated UI. 
      updateUI(false); 
     } 


    } 

    private void updateUI(boolean b) { 


    } 





    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragment(new LoginSocial(), "ONE"); 
     adapter.addFragment(new Updates(), "TWO"); 
     viewPager.setAdapter(adapter); 


    } 



    @Override 
    public void onFragmentInteraction(Uri uri) { 

    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 


    TextView txtStatus; 
    LoginButton fb_login; 
    CallbackManager callbackManager; 



    private void initializeControls(){ 

     callbackManager = CallbackManager.Factory.create(); 
     txtStatus = (TextView) findViewById(R.id.txtStatus); 
     fb_login = (LoginButton) findViewById(R.id.fb_login); 
    } 


    private void loginWithFB(){ 

     LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       txtStatus.setText("Login Success"); 
      } 

      @Override 
      public void onCancel() { 
       txtStatus.setText("Login Cancelled."); 
      } 

      @Override 
      public void onError(FacebookException error) { 
       txtStatus.setText("Login Error:"+error.getMessage()); 
      } 
     }); 
    } 



    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 




      callbackManager.onActivityResult(requestCode, resultCode, data); 




     if (requestCode == RC_SIGN_IN) { 
      GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      handleResult(result); 


     } 

回答

1

您可以使用FacebookSdk.isFacebookRequestCode()检查请求的代码是从Facebook写入请求代码“loginWIthFB”活动结果。

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data); 
    if (FacebookSdk.isFacebookRequestCode(requestCode) { 
     // Facebook 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } else if (requestCode == RC_SIGN_IN) { 
     // Google 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleResult(result); 
    } 
} 
+0

嗨,我无法在模拟器中打开我的应用程序。我觉得Tablayout存在问题。我试过没有Tablayout的代码,它的工作。但在Tablayout它不开放。请帮助。在此先感谢 –

+0

我建议您发布一个新的问题,因为这是与原始问题不同的问题。确保包含错误日志,以便更容易识别问题。我会尽我所能提供帮助。 – 345

+0

谢谢。我已经发布我的问题在这个链接https://stackoverflow.com/questions/45000222/unable-to-open-the-app-in-emulator-due-to-tablayout-i-guess?noredirect=1#comment76974676_45000222。非常感谢你 –