Android ClassNotFound и android.view.InflateException: - PullRequest
3 голосов
/ 14 октября 2011

Я пытаюсь интегрировать facebook в свое приложение. Я использую пример приложения для Facebook, загруженного с facebook в качестве справочного материала (также сгенерировал appId и весь этот процесс на developer.facebook). Я немного ленив, поэтому я не хочу просматривать весь код facebook sdk. Проще говоря, я просто добавляю библиотечный проект com_android_facebook в свое приложение, а также копирую все классы в пример приложения Facebookв моем приложении, кроме Example.java

Теперь я изменяю класс MyActivity, похожий на класс Example.java, это означает, что MyActivity теперь имеет весь код класса Example, а также мою основную активность.измените макет моего приложения на

    <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout

   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   xmlns:android="http://schemas.android.com/apk/res/android"
  >
  <TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:textSize="22px"
    android:textColor="#ff00ff"
    android:gravity="center"
 >
  </TextView>

<com.android.facebook.LoginButton
 android:id="@+id/login"
 android:src="@drawable/login"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
/>

<Button android:id="@+id/uploadButton"
    android:text="@string/upload"
    android:visibility="invisible"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:paddingRight="20dp" 
    android:paddingLeft="20dp"
    android:layout_margin="20dp" 
    />

<Button android:id="@+id/requestButton"
    android:text="@string/request"
    android:visibility="invisible"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:paddingRight="20dp" 
    android:paddingLeft="20dp"
    android:layout_margin="20dp" 
    />


<Button android:id="@+id/postButton" 
    android:text="@string/post"
    android:visibility="invisible"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:paddingRight="20dp" 
    android:paddingLeft="20dp"
    android:layout_margin="20dp" 
    />

<Button android:id="@+id/deletePostButton" 
    android:text="@string/delete"
    android:visibility="invisible"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:paddingRight="20dp" 
    android:paddingLeft="20dp"
    android:layout_margin="20dp" 
    />

</RelativeLayout>

Теперь, когда я запускаю свое приложение, я получаю там ошибки

   10-14 00:58:37.786: ERROR/AndroidRuntime(3971): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.myapp/com.android.myapp.MyActivity}: android.view.InflateException: Binary XML file line #21: Error inflating class com.android.facebook.LoginButton
   10-14 00:58:37.786: ERROR/AndroidRuntime(3971): Caused by: android.view.InflateException: Binary XML file line #21: Error inflating class com.android.facebook.LoginButton
   10-14 00:58:37.786: ERROR/AndroidRuntime(3971): Caused by: java.lang.ClassNotFoundException: com.android.facebook.LoginButton in loader dalvik.system.PathClassLoader@44c06850

Любая помощь, предложениядобро пожаловать ...

Ответы [ 5 ]

4 голосов
/ 15 января 2013

Начиная с версии 3.0 SDK Facebook, кнопка LoginButton теперь доступна как часть SDK как com.facebook.widget.LoginButton

См. https://developers.facebook.com/docs/reference/android/3.0/LoginButton

Обратите внимание, что Facebook принадлежитинструкции по обновлению здесь ссылаются на неправильный пакет, кнопка LoginButton должна быть объявлена ​​как com.facebook.widget.LoginButton, а не com.facebook.LoginButton

4 голосов
/ 26 февраля 2012

Я тоже сталкивался с такой же проблемой.Я изменил файл main.xml с:

<com.facebook.android.LoginButton
    android:id="@+id/login"
    android:src="@drawable/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_margin="30dp"
    />

на (Текущий пакет com.facebook.fbtest_simple):

<com.facebook.fbtest_simple.LoginButton 
    android:id="@+id/login"
    android:src="@drawable/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_margin="30dp"
    />

Поскольку LoginButton не является частью стандартной библиотеки FB.

2 голосов
/ 14 октября 2011

В основном источнике этого SDK нет LoginButton.
Он доступен только в примере кода, поэтому просто не может загрузить недоступный класс (ClassNotFoundException) ...

0 голосов
/ 26 апреля 2016

Инициализация SDK Facebook - это то, что мне помогло.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this.getApplicationContext());
    setContentView(R.layout.activity_login);
}
0 голосов
/ 14 октября 2011

Easy one:

   10-14 00:58:37.786: ERROR/AndroidRuntime(3971): Caused by: java.lang.ClassNotFoundException: com.android.facebook.LoginButton in loader dalvik.system.PathClassLoader@44c06850

В поиске в социальной сети Facebook вы можете перейти по этому пути :

AsyncFacebookRunner.java, Facebook.java, FacebookError.java, FbDialog.java, Util.java

.. И видите, что нет ничего подобного LoginButton, тогда я могу подумать, что вы используете старый учебник или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...