Intereting Posts
Тест CTS Android может работать на нескольких устройствах параллельно Как я могу вернуть запись на основе только частичного соответствия этой записи? Как обрабатывать RESTful обновление удаленного сервера с помощью SyncAdapter Уровень данных более высокого уровня для Android? Координатор не работает Проверьте, находится ли пользователь в лесу, используя местоположение Показывать оповещение в Android каждые пять минут Android: удаление изображения Android: вычисление размера представления внутри MyAdapter :: getView Android ListView с элементами, доступными для кликов в его рядах, вызывает проблемы с продолжением прокрутки Android: View.setClickable потребляет событие click Почему странное соглашение об именах «AlertDialog.Builder» вместо «AlertDialogBuilder» в Android Высота макета Android минимальна match_parent, но wrap_content, если содержимое больше родительского Android AVD ничего не показывает. Только «ANDROID» в середине экрана Есть ли способ использовать ExoPlayer для воссоздания ThumbnailUtils.extractThumbnail

Java.lang.RuntimeException с примером для входа в Facebook

Я следую руководству Facebook, чтобы сделать приложение для входа в Android. После:

  1. Установите приложение Facebook (не обязательно) на виртуальном устройстве
  2. Импорт Facebook SDK в Android Studio в качестве модуля
  3. Импортируйте предыдущий модуль в проект и
  4. Измените код, как говорится в руководстве.

Проект компилируется. Но когда я запускаю машину и пытаюсь открыть приложение, это краш-шоу:

К сожалению, приложение остановилось.

Я не мог найти решение после того, как прочитал похожие сообщения, подобные этому и этому .

Я использую Android 0.5.8, Oracle JDK 7 и API 16 как целевые , минимальные и макс .

Основными файлами являются activity_main.xml , MainActivity.java и MainFragment.java .

Вот последний вывод logcat :

 05-30 03:15:54.127 647-664/com.jdk8.minifacebookloginapp.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:299) at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) at java.util.concurrent.FutureTask.setException(FutureTask.java:124) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) Caused by: java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781) at com.facebook.internal.Utility.queryAppSettings(Utility.java:372) at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:676) at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:673) at android.os.AsyncTask$2.call(AsyncTask.java:287) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)            at java.util.concurrent.FutureTask.run(FutureTask.java:137)            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)            at java.lang.Thread.run(Thread.java:856) 

Проблема заключается не в вашем коде, а в SDK от facebook. Вы можете сказать, глядя на верхнюю часть NullPointerException

 Caused by: java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:781) at com.facebook.internal.Utility.queryAppSettings(Utility.java:372) 

Две последние три строки, связанные с ошибкой, относятся к facebook sdk (com.facebook.internal) и вашему пакету java.util, ни один из которых не указан из вашего кода.

Чтобы исправить это, вам нужно закончить настройку в учебнике по началу работы с facebook для Android, где вы регистрируете свое приложение после генерации хэша ключа Android. После этого откройте свой AndroidManifest.xml и добавьте линию метаданных

 <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/app_id"/> <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> </application> 

Затем добавьте app_id в файл strings.xml (найденный на странице настроек в вашей учетной записи разработчика facebook. Идентификатор приложения находится в вашей учетной записи разработчика facebook.

Как только вы это сделаете, он должен скомпилировать

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

Отсутствовал в моем случае.

Вы должны добавить

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

В правильном месте внутри приложения не внутри деятельности