我正在尝试整合Facebook AccountKit,以允许用户使用他们的电子邮件或电话号码进行注册。但是在启动AccountKitActivity时,应用程序崩溃是因为它无法使“ConstrainedLayout”膨胀。
错误讯息:
java.lang.RuntimeException: Unable to start activity
android.view.InflateException: Binary XML file line #45:
Error inflating class com.facebook.accountkit.ui.ConstrainedLinearLayout
以下:
Caused by: java.lang.UnsupportedOperationException:
Failed to resolve attribute at index 12:
TypedValue{t=0x3/d=0x512 "res/drawable/scrollbar_handle_material.xml" a=1 r=0x10805cd}
我正在使用我的gradle:
compile 'com.facebook.android:facebook-android-sdk:4.11.0'
compile 'com.facebook.android:account-kit-sdk:4.11.0'
在尝试启动AccountKitActivity之前,我正在调用AccountKit.initialize()。
我的简单登录活动,由两个按钮组成:
public class LoginActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Button buttonSMS = (Button) findViewById(R.id.buttonSignInSms);
Button buttonEmail = (Button) findViewById(R.id.buttonSignInEmail);
buttonSMS.setOnClickListener(this);
buttonEmail.setOnClickListener(this);
}
public static int APP_REQUEST_CODE = 42;
public void onLoginPhone(final View view) {
final Intent intent = new Intent(this, AccountKitActivity.class);
AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
new AccountKitConfiguration.AccountKitConfigurationBuilder(
LoginType.PHONE,
AccountKitActivity.ResponseType.CODE); // or .ResponseType.TOKEN
// ... perform additional configuration ...
intent.putExtra(
AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
configurationBuilder.build());
startActivityForResult(intent, APP_REQUEST_CODE);
}
public void onLoginEmail(final View view) {
final Intent intent = new Intent(this, AccountKitActivity.class);
AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder =
new AccountKitConfiguration.AccountKitConfigurationBuilder(
LoginType.EMAIL,
AccountKitActivity.ResponseType.CODE); // or .ResponseType.TOKEN
// ... perform additional configuration ...
intent.putExtra(
AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,
configurationBuilder.build());
startActivityForResult(intent, APP_REQUEST_CODE);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonSignInSms : {
onLoginPhone(v);
break;
}
case R.id.buttonSignInEmail : {
onLoginEmail(v);
break;
}
}
}
}
任何人都是一个想法?
答案 0 :(得分:29)
我今天遇到了同样的问题,整合了Account Kit。他们的文档没有明确说明,但您需要将AppLoginTheme添加到themes.xml:
<style name="AppLoginTheme" parent="Theme.AccountKit" />
另一种可能的解决方案是删除清单中AccountKitActivity的主题覆盖,如下所示:
...
<activity android:name="com.facebook.accountkit.ui.AccountKitActivity" />
...
答案 1 :(得分:4)
我有这个问题。扎克的解决方案帮助我解决了这个问题。以下是我的解决方案,这可能对其他人有帮助。
<强>的AndroidManifest.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.screenshot.accountkitclient">
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="com.facebook.accountkit.ApplicationName"
android:value="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/FACEBOOK_APP_ID" />
<meta-data android:name="com.facebook.accountkit.ClientToken"
android:value="@string/ACCOUNT_KIT_CLIENT_TOKEN" />
<activity android:name="com.facebook.accountkit.ui.AccountKitActivity"
tools:replace="android:theme"
android:theme="@style/AppLoginTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/ak_login_protocol_scheme" />
</intent-filter>
</activity>
</application>
</manifest>
不要忘记添加工具:replace =&#34; android:theme&#34;在AccountKitActivity中
<强> style.xml 强>
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<style name="AppLoginTheme" parent="Theme.AccountKit">
<item name="com_accountkit_primary_color">#ef0414</item>
<item name="com_accountkit_primary_text_color">@android:color/white</item>
<item name="com_accountkit_secondary_text_color">#f10910</item>
<item name="com_accountkit_status_bar_color">#e40416</item>
<item name="com_accountkit_input_accent_color">?attr/com_accountkit_primary_color</item>
<item name="com_accountkit_input_border_color">?attr/com_accountkit_primary_color</item>
</style>
答案 2 :(得分:-1)