如何在不扩展应用程序的情况下使用 AndroidBootstrap

How to use AndroidBootstrap without extends Application

我正在尝试使用 Android Bootstrap 库。我遵循快速入门。在快速入门中,它说我应该像这样覆盖我的 class:

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

如何在不扩展 Application class 的情况下使用这个库?我想在我的 Activity classes 中使用这个库。

登录Activity:

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 class 中,我放置了按钮。当我点击它时,我应该去登录Activity class。但是,我得到一个错误:

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

在你的 activity class:

在onCreate()方法中,把这一行写在setContentView()之前;

protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         TypefaceProvider.registerDefaultIconSets();
         
}

希望有用。

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

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

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

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