Java Can';不要让facebook登录到android上工作
无法让Facebook登录工作-应用程序总是在我打开它时崩溃。我已经使用了这个()教程并重做了大约5次,但仍然没有 SplashFragment.java SelectionFragment.java MainLogin.javaJava Can';不要让facebook登录到android上工作,java,android,facebook,Java,Android,Facebook,无法让Facebook登录工作-应用程序总是在我打开它时崩溃。我已经使用了这个()教程并重做了大约5次,但仍然没有 SplashFragment.java SelectionFragment.java MainLogin.java package com.example.braucamkopa; 导入com.facebook.Session; 导入com.facebook.Session.StatusCallback; 导入com.facebook.SessionState; 导入com.fac
package com.example.braucamkopa;
导入com.facebook.Session;
导入com.facebook.Session.StatusCallback;
导入com.facebook.SessionState;
导入com.facebook.ui生命周期帮助;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentTransaction;
公共类MainLogin扩展了FragmentActivity{
私有静态最终int SPLASH=0;
私有静态最终整数选择=1;
私有静态最终整型片段计数=SELECTION+1;
私有片段[]片段=新片段[Fragment_COUNT];
私人UiLifecycleHelper uiHelper;
private Session.StatusCallback回调=
新建会话。StatusCallback(){
@凌驾
公共无效呼叫(会话,
会话状态(状态、异常){
onSessionStateChange(会话、状态、异常);
}
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
uiHelper=新UiLifecycleHelper(此为回调);
uiHelper.onCreate(savedInstanceState);
setContentView(R.layout.mainlogin);
FragmentManager fm=getSupportFragmentManager();
片段[SPLASH]=fm.findFragmentById(R.id.splashFragment);
片段[SELECTION]=fm.findFragmentById(R.id.selectionFragment);
FragmentTransaction=fm.beginTransaction();
for(int i=0;i
安卓清单
LogCat
07-03 20:23:39.674:I/dalvikvm(25239):找不到从方法com.facebook.UiLifecycleHelper引用的方法android.support.v4.content.LocalBroadcastManager.getInstance。
07-03 20:23:39.674:W/dalvikvm(25239):VFY:无法解析静态方法835:Landroid/support/v4/content/LocalBroadcastManager;。getInstance(Landroid/content/Context;)Landroid/support/v4/content/LocalBroadcastManager;
07-03 20:23:39.674:D/dalvikvm(25239):VFY:在0x0019处替换操作码0x71
07-03 20:23:39.674:I/dalvikvm(25239):找不到方法android.support.v4.content.LocalBroadcastManager.unregisterReceiver,从方法com.facebook.UiLifecycleHelper.onPause引用
07-03 20:23:39.674:W/dalvikvm(25239):VFY:无法解析虚拟方法838:Landroid/support/v4/content/LocalBroadcastManager;。未注册接收器(Landroid/content/BroadcastReceiver;)V
07-03 20:23:39.674:D/dalvikvm(25239):VFY:在0x0004处替换操作码0x6e
07-03 20:23:39.674:I/dalvikvm(25239):找不到方法android.support.v4.content.LocalBroadcastManager.registerReceiver,从方法com.facebook.UiLifecycleHelper.onResume引用
07-03 20:23:39.674:W/dalvikvm(25239):VFY:无法解析虚拟方法836:Landroid/support/v4/content/LocalBroadcastManager;。registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
07-03 20:23:39.674:D/dalvikvm(25239):VFY:在0x0032处替换操作码0x6e
07-03 20:23:39.674:D/AndroidRuntime(25239):关闭虚拟机
07-03 20:23:39.674:W/dalvikvm(25239):threadid=1:线程退出,未捕获例外
package com.example.braucamkopa;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SplashFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.splash,
container, false);
return view;
}
}
package com.example.braucamkopa;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SelectionFragment extends Fragment {
private static final String TAG = "SelectionFragment";
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.selection,
container, false);
return view;
}
}
package com.example.braucamkopa;
import com.facebook.Session;
import com.facebook.Session.StatusCallback;
import com.facebook.SessionState;
import com.facebook.UiLifecycleHelper;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public class MainLogin extends FragmentActivity {
private static final int SPLASH = 0;
private static final int SELECTION = 1;
private static final int FRAGMENT_COUNT = SELECTION +1;
private Fragment[] fragments = new Fragment[FRAGMENT_COUNT];
private UiLifecycleHelper uiHelper;
private Session.StatusCallback callback =
new Session.StatusCallback() {
@Override
public void call(Session session,
SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
setContentView(R.layout.mainlogin);
FragmentManager fm = getSupportFragmentManager();
fragments[SPLASH] = fm.findFragmentById(R.id.splashFragment);
fragments[SELECTION] = fm.findFragmentById(R.id.selectionFragment);
FragmentTransaction transaction = fm.beginTransaction();
for(int i = 0; i < fragments.length; i++) {
transaction.hide(fragments[i]);
}
transaction.commit();
}
private void showFragment(int fragmentIndex, boolean addToBackStack) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
for (int i = 0; i < fragments.length; i++) {
if (i == fragmentIndex) {
transaction.show(fragments[i]);
} else {
transaction.hide(fragments[i]);
}
}
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.commit();
}
private boolean isResumed = false;
@Override
public void onResume() {
super.onResume();
uiHelper.onResume();
isResumed = true;
}
@Override
public void onPause() {
super.onPause();
uiHelper.onPause();
isResumed = false;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
uiHelper.onSaveInstanceState(outState);
}
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
// Only make changes if the activity is visible
if (isResumed) {
FragmentManager manager = getSupportFragmentManager();
// Get the number of entries in the back stack
int backStackSize = manager.getBackStackEntryCount();
// Clear the back stack
for (int i = 0; i < backStackSize; i++) {
manager.popBackStack();
}
if (state.isOpened()) {
// If the session state is open:
// Show the authenticated fragment
showFragment(SELECTION, false);
} else if (state.isClosed()) {
// If the session state is closed:
// Show the login fragment
showFragment(SPLASH, false);
}
}
}
protected void onResumeFragments() {
Session session = Session.getActiveSession();
if (session != null && session.isOpened()) {
// if the session is already open,
// try to show the selection fragment
showFragment(SELECTION, false);
} else {
// otherwise present the splash screen
// and ask the person to login.
showFragment(SPLASH, false);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.braucamkopa"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.braucamkopa.MainLogin"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SplashFragment"
android:label="@string/app_name" >
</activity>
<activity
android:name=".SelectionFragment"
android:label="@string/app_name" >
</activity>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/app_id" />
</application>
</manifest>
07-03 20:23:39.674: I/dalvikvm(25239): Could not find method android.support.v4.content.LocalBroadcastManager.getInstance, referenced from method com.facebook.UiLifecycleHelper.<init>
07-03 20:23:39.674: W/dalvikvm(25239): VFY: unable to resolve static method 835: Landroid/support/v4/content/LocalBroadcastManager;.getInstance (Landroid/content/Context;)Landroid/support/v4/content/LocalBroadcastManager;
07-03 20:23:39.674: D/dalvikvm(25239): VFY: replacing opcode 0x71 at 0x0019
07-03 20:23:39.674: I/dalvikvm(25239): Could not find method android.support.v4.content.LocalBroadcastManager.unregisterReceiver, referenced from method com.facebook.UiLifecycleHelper.onPause
07-03 20:23:39.674: W/dalvikvm(25239): VFY: unable to resolve virtual method 838: Landroid/support/v4/content/LocalBroadcastManager;.unregisterReceiver (Landroid/content/BroadcastReceiver;)V
07-03 20:23:39.674: D/dalvikvm(25239): VFY: replacing opcode 0x6e at 0x0004
07-03 20:23:39.674: I/dalvikvm(25239): Could not find method android.support.v4.content.LocalBroadcastManager.registerReceiver, referenced from method com.facebook.UiLifecycleHelper.onResume
07-03 20:23:39.674: W/dalvikvm(25239): VFY: unable to resolve virtual method 836: Landroid/support/v4/content/LocalBroadcastManager;.registerReceiver (Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
07-03 20:23:39.674: D/dalvikvm(25239): VFY: replacing opcode 0x6e at 0x0032
07-03 20:23:39.674: D/AndroidRuntime(25239): Shutting down VM
07-03 20:23:39.674: W/dalvikvm(25239): threadid=1: thread exiting with uncaught exception (group=0x41abeba8)
07-03 20:23:39.684: E/AndroidRuntime(25239): FATAL EXCEPTION: main
07-03 20:23:39.684: E/AndroidRuntime(25239): Process: com.example.braucamkopa, PID: 25239
07-03 20:23:39.684: E/AndroidRuntime(25239): java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager
07-03 20:23:39.684: E/AndroidRuntime(25239): at com.facebook.UiLifecycleHelper.<init>(UiLifecycleHelper.java:72)
07-03 20:23:39.684: E/AndroidRuntime(25239): at com.example.braucamkopa.MainLogin.onCreate(MainLogin.java:33)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.app.Activity.performCreate(Activity.java:5231)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.os.Handler.dispatchMessage(Handler.java:102)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.os.Looper.loop(Looper.java:136)
07-03 20:23:39.684: E/AndroidRuntime(25239): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-03 20:23:39.684: E/AndroidRuntime(25239): at java.lang.reflect.Method.invokeNative(Native Method)
07-03 20:23:39.684: E/AndroidRuntime(25239): at java.lang.reflect.Method.invoke(Method.java:515)
07-03 20:23:39.684: E/AndroidRuntime(25239): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-03 20:23:39.684: E/AndroidRuntime(25239): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-03 20:23:39.684: E/AndroidRuntime(25239): at dalvik.system.NativeStart.main(Native Method)
07-03 20:27:55.754: I/Process(25937): Sending signal. PID: 25937 SIG: 9
07-03 20:34:58.184: I/Process(26488): Sending signal. PID: 26488 SIG: 9