首要的是有人可以给我提供一个示例,该示例在登录时可以连接并切换到另一个片段,这很好,因此我将拥有可以理解的工作代码。当用户与Facebook连接时,我只是想在测试页上放置一个“登录”按钮,然后片段应更改。我尝试了那里的东西:https : //developers.facebook.com/docs/facebook-login/android/v2.3,但我无法正常工作,也不了解发生了什么。。所以我迷路了。我正在ExceptionInitializeError
使用以下代码。但是我怀疑这是正确的。
我的登录片段:
public View onCreateView(
LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.login_frag, container, false);
loginButton = (LoginButton) view.findViewById(R.id.login_button);
loginButton.setFragment(this);
// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Toast.makeText(getActivity(),"Success",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getActivity(),"fail",Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(getActivity(),"error",Toast.LENGTH_SHORT).show();
}
});
return view;
}
主要活动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
monFragmentManager = new MonFragmentManager(getSupportFragmentManager());
monFragmentManager.showFragment(0, false);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
monFragmentManager.showFragment(1,false);
}
@Override
public void onCancel() {
monFragmentManager.showFragment(0,false);
}
@Override
public void onError(FacebookException e) {
monFragmentManager.showFragment(0,false);
}
});
}
为了替换片段,您需要获取的实例FragmentManager
。在此实例上,您调用.beginTransaction()
以获得一个FragmentTransaction
实例。在此交易实例上,您可以致电.replace()
。这有两个参数:要在其中替换片段的容器的ID,以及要在替换后显示的片段的实例。最后,您需要调用.commit()
事务实例以使更改生效。
您可以在您onSuccess()
的匿名内部FacebookCallback<LoginResult>
类中定义的方法内完成所有操作MainActivity
:
// ...
// obtain someFragmentManager instance
// obtain containerViewId instance
// ...
@Override
public void onSuccess(LoginResult loginResult) {
someFragmentManager.beginTransaction()
.replace(containerViewId, otherFragment)
.commit();
}
您可以在Android文档的此页面上看到替换片段的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句