添加facebook登录后应用程序崩溃

时间:2015-10-16 12:41:56

标签: android facebook

我的应用程序一直崩溃,因为我添加了facebook登录按钮,请帮助,我已经尝试了我在这里看到的提示,但到目前为止没有解决问题,这是我的类文件



package glmdnigltd.globaldigitalmagazine;

/**
 * Created by Theophilus on 10/15/2015.
 */




// Add this to the header of your file:
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.facebook.FacebookSdk;

import butterknife.ButterKnife;
import butterknife.InjectView;

public class Login extends AppCompatActivity {
    private static final String TAG = "Login";
    private static final int REQUEST_SIGNUP = 0;

    @InjectView(R.id.input_email) EditText _emailText;
    @InjectView(R.id.input_password) EditText _passwordText;
    @InjectView(R.id.btn_login) Button _loginButton;
    @InjectView(R.id.link_signup) TextView _signupLink;



    @Override
    public void onCreate(Bundle savedInstanceState) {

        // Updated your class body:

        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        // Initialize the SDK before executing any other operations,
        // especially, if you're using Facebook UI elements.






        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        ButterKnife.inject(this);

        _loginButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                login();
            }
        });

        _signupLink.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // Start the Signup activity
                Intent intent = new Intent(getApplicationContext(), SignUp.class);
                startActivityForResult(intent, REQUEST_SIGNUP);
            }
        });
    }



    public void login() {
        Log.d(TAG, "Login");

        if (!validate()) {
            onLoginFailed();
            return;
        }

        _loginButton.setEnabled(false);

        final ProgressDialog progressDialog = new ProgressDialog(Login.this,
                R.style.AppTheme);
        progressDialog.setIndeterminate(true);
        progressDialog.setMessage("Authenticating...");
        progressDialog.show();

        String email = _emailText.getText().toString();
        String password = _passwordText.getText().toString();

        // TODO: Implement your own authentication logic here.

        new android.os.Handler().postDelayed(
                new Runnable() {
                    public void run() {
                        // On complete call either onLoginSuccess or onLoginFailed
                        onLoginSuccess();
                        // onLoginFailed();
                        progressDialog.dismiss();
                    }
                }, 3000);
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_SIGNUP) {
            if (resultCode == RESULT_OK) {

                // TODO: Implement successful signup logic here
                // By default we just finish the Activity and log them in automatically
                this.finish();
            }
        }
    }

    @Override
    public void onBackPressed() {
        // Disable going back to the MainActivity
        moveTaskToBack(true);
    }

    public void onLoginSuccess() {
        _loginButton.setEnabled(true);
        finish();
    }

    public void onLoginFailed() {
        Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show();

        _loginButton.setEnabled(true);
    }

    public boolean validate() {
        boolean valid = true;

        String email = _emailText.getText().toString();
        String password = _passwordText.getText().toString();

        if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            _emailText.setError("enter a valid email address");
            valid = false;
        } else {
            _emailText.setError(null);
        }

        if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
            _passwordText.setError("between 4 and 10 alphanumeric characters");
            valid = false;
        } else {
            _passwordText.setError(null);
        }

        return valid;
    }
}
&#13;
&#13;
&#13;

这是我的清单文件

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="glmdnigltd.globaldigitalmagazine" >

    <uses-permission android:name="android.permission.INTERNET" />

    <!-- To auto-complete the email text field in the login form with the user's emails -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_PROFILE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".Splash" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".WelcomeActivity" >
        </activity>
        <activity android:name=".SignUp" />
        <activity android:name=".Login"/>

        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

    </application>


    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges=
            "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:label="@string/app_name" />

    <provider android:authorities="com.facebook.app.FacebookContentProvider544049405742837"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />

    <activity android:name="com.facebook.LoginActivity" ></activity>


    <activity
        android:name=".MainActivity"
        android:label="@string/app_name">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>



</manifest>
&#13;
&#13;
&#13;

这是xml文件

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fitsSystemWindows="true">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="56dp"
        android:paddingLeft="24dp"
        android:paddingRight="24dp">

        <ImageView android:src="@drawable/logo"
            android:layout_width="wrap_content"
            android:layout_height="72dp"
            android:layout_marginBottom="24dp"
            android:layout_gravity="center_horizontal" />

        <!--  Email Label -->
        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp">
            <EditText android:id="@+id/input_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"
                android:hint="Email" />
        </android.support.design.widget.TextInputLayout>

        <!--  Password Label -->
        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp">
            <EditText android:id="@+id/input_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:hint="Password"/>
        </android.support.design.widget.TextInputLayout>

        <android.support.v7.widget.AppCompatButton
            android:id="@+id/btn_login"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="24dp"
            android:layout_marginBottom="24dp"
            android:padding="12dp"
            android:text="Login"/>

        <TextView android:id="@+id/link_signup"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="24dp"
            android:text="No account yet? Create one"
            android:gravity="center"
            android:textSize="16dip"/>


        <com.facebook.login.widget.LoginButton
            android:id="@+id/login_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="30dp"
            android:layout_marginBottom="30dp" />

    </LinearLayout>


</ScrollView>
&#13;
&#13;
&#13;

logcat的

&#13;
&#13;
10-16 09:05:15.618 19462-19462/? I/art: Late-enabling -Xcheck:jni
10-16 09:05:15.737 19462-19462/glmdnigltd.globaldigitalmagazine W/com.facebook.internal.Validate: FacebookActivity is not declared in the AndroidManifest.xml, please add com.facebook.FacebookActivity to your AndroidManifest.xml file. See https://developers.facebook.com/docs/android/getting-started for more info.
10-16 09:05:15.797 19462-19462/glmdnigltd.globaldigitalmagazine I/AppCompatDelegate: The Activity's LayoutInflater already has a Factory installed so we can not install AppCompat's
10-16 09:05:15.798 19462-19462/glmdnigltd.globaldigitalmagazine D/AndroidRuntime: Shutting down VM
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime: FATAL EXCEPTION: main
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime: Process: glmdnigltd.globaldigitalmagazine, PID: 19462
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{glmdnigltd.globaldigitalmagazine/glmdnigltd.globaldigitalmagazine.Login}: java.lang.IllegalStateException: Already attached
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:  Caused by: java.lang.IllegalStateException: Already attached
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.attachController(FragmentManager.java:2036)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.support.v4.app.FragmentController.attachHost(FragmentController.java:95)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:276)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:61)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at glmdnigltd.globaldigitalmagazine.Login.onCreate(Login.java:52)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5990)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
10-16 09:05:15.835 19462-19462/glmdnigltd.globaldigitalmagazine E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
10-16 09:05:54.867 19462-19462/? I/Process: Sending signal. PID: 19462 SIG: 9
&#13;
&#13;
&#13;

谢谢

1 个答案:

答案 0 :(得分:0)

如果错误出现在Facebook登录按钮中,则重新启动eclipse或Android studio 。然后运行..

相关问题