如何使用AndroidBootstrap而不扩展Application

时间:2017-09-15 07:30:29

标签: android android-bootstrap-widgets

我正在尝试使用Android Bootstrap库。我跟着快速启动。在快速入门中,它说我应该覆盖我的类:

public class SampleApplication extends Application {
    @Override public void onCreate() {
        super.onCreate();
        TypefaceProvider.registerDefaultIconSets();
    }
}

如何在不延长Application课程的情况下使用此库?我想在我的Activity类中使用这个库。

LoginActivity:

public class Login extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TypefaceProvider.registerDefaultIconSets();
        setContentView(R.layout.activity_login);
    }
}

activity_login.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.merve.tev.Login">



    <com.beardedhen.androidbootstrap.BootstrapDropDown
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:bootstrapText="Medium {fa_thumbs_o_up}"
        app:bootstrapBrand="regular"
        app:roundedCorners="true"
        app:bootstrapSize="md"
        app:dropdownResource="@array/bootstrap_dropdown_example_data"
        app:bootstrapExpandDirection="down"
        tools:layout_editor_absoluteY="202dp"
        tools:layout_editor_absoluteX="115dp" />
</LinearLayout>

在我的MainActivity类中,我放置了按钮。当我点击它时,我应该去LoginActivity类。但是,我收到一个错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class com.beardedhen.androidbootstrap.BootstrapDropDown

2 个答案:

答案 0 :(得分:1)

在您的活动课程中:

在onCreate()方法中,在setContentView();

之前写下这一行
protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         TypefaceProvider.registerDefaultIconSets();

}

我希望它能奏效。

答案 1 :(得分:0)

建议在应用程序类中调用TypefaceProvider.registerDefaultIconSets();,因为这会在屏幕上显示任何视图之前加载FontAwesome字体。

如果您没有加载FontAwesome图标,则可以跳过此步骤。如果你担心启动时间,那么你可以尝试异步执行它。

最后,如果您知道您的应用将始终从某个活动启动,那么您可以在调用TypefaceProvider.registerDefaultIconSets();之前调用setContentView,并且仍然可以使用FontAwesome图标。

这里唯一的权衡是大多数应用程序都有多个活动作为入口点,这意味着您可能需要将此设置逻辑添加到多个位置。这就是为什么当前的建议是在你的Application类中设置它 - 你只需要初始化它一次。