簡體   English   中英

Android應用程序因Facebook登錄而崩潰

[英]Android app crashes with Facebook Login

我在執行Facebook登錄時遇到問題。 調用登錄片段時,應用程序崩潰。 我讀到很多有關此問題,但他們的答案對我不起作用。

這是我的XML:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/bLoginAccedi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Accedi"
        android:layout_marginTop="70dp"
        android:layout_alignTop="@+id/bFacebookAccedi"
        android:layout_alignLeft="@+id/bFacebookAccedi"
        android:layout_alignRight="@+id/bFacebookAccedi"
        android:layout_alignStart="@+id/bFacebookAccedi" />

    <com.facebook.widget.LoginButton
        xmlns:fb="http://schemas.android.com/apk/res-auto"
        android:id="@+id/bFacebookAccedi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="150dp"
        fb:login_text="Accedi con Facebook"
        />
</RelativeLayout>

這是我的LoginFragment:

    public class LoginFragment extends Fragment {

    private View parentView;
    private ResideMenu resideMenu;
    private Button bLoginAccedi;
    private LoginButton bFacebookAccedi;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        parentView = inflater.inflate(R.layout.login, container, false);
        setUpViews();

        ActionBar actionBar = getActivity().getActionBar();
        actionBar.show();
        actionBar.setTitle("Log in");
        actionBar.setDisplayHomeAsUpEnabled(true);

        bFacebookAccedi = (LoginButton) parentView.findViewById(R.id.bFacebookAccedi);
        bLoginAccedi = (Button) parentView.findViewById(R.id.bLoginAccedi);

        bFacebookAccedi.setBackgroundColor(getResources().getColor(R.color.turquoise));

        bLoginAccedi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(getActivity(), Accesso.class);
                startActivity(i);
            }
        });

        return parentView;
    }

    private void setUpViews() {
        MainActivity parentActivity = (MainActivity) getActivity();
        resideMenu = parentActivity.getResideMenu(); }

}

而我的清單:

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.facebook.sdk.ApplicationId "
            android:value="@string/facebook_app_id"/>
        <activity
            android:name="discontinuity.it.agency1.MainActivity"
            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="discontinuity.it.agency1.ConfermaFB"
            android:label="@string/title_activity_conferma_fb"
            android:screenOrientation="portrait">
        </activity>
        <activity
            android:name="discontinuity.it.agency1.Accesso"
            android:label="@string/title_activity_accesso"
            android:screenOrientation="portrait">
        </activity>

    </application>

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

</manifest>

我在logcat中遇到此錯誤:

java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:300)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)
 Caused by: java.lang.NullPointerException
        at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:911)
        at com.facebook.internal.Utility.queryAppSettings(Utility.java:673)
        at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:678)
        at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:675)
        at android.os.AsyncTask$2.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:841)

似乎錯過了應用程序ID,但我已經將其與元數據一起放入清單中。 那我怎么了

您似乎在這里有多余的空間:

android:name="com.facebook.sdk.ApplicationId "

我只是將此代碼添加到我的Manifest.xml ,問題就解決了:

   .
   .
   .
 </activity>

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

</application>
</manifest>

並在我的strings.xml

<string name="facebook_app_id">012345678901234</string>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM