[英]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.