Проблема с использованием иконок

391
27 января 2017, 05:46

Я сделал NavigationDrawer с помощью MaterialDrawer от Mike Penz. Он отлично работает, но когда я пытаюсь заменить значки "FontAwesome" на "GoogleMaterial" или другие получаю сообщение об ошибке

"Unfortunately, App has stopped."

Все работает только со значками "FontAwesome"

Как может быть решена эта проблема?

Заранее спасибо!

MainActivity.java:

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.iconics.typeface.FontAwesome;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
public class MainActivity extends ActionBarActivity {
    private Drawer.Result drawerResult = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Handle Toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        toolbar.getBackground().setAlpha(100);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        drawerResult = new Drawer()
                .withActivity(this)
                .withToolbar(toolbar)
                .withActionBarDrawerToggle(true)
                .withHeader(R.layout.drawer_header)
                .addDrawerItems(
                        new PrimaryDrawerItem().withName(R.string.drawer_item_home).withIcon(FontAwesome.Icon.faw_home),
                        new PrimaryDrawerItem().withName(R.string.drawer_item_database).withIcon(FontAwesome.Icon.faw_database),
                        new PrimaryDrawerItem().withName(R.string.drawer_item_map).withIcon(FontAwesome.Icon.faw_map_marker),
                        new PrimaryDrawerItem().withName(R.string.drawer_item_guides).withIcon(FontAwesome.Icon.faw_book),
                        new PrimaryDrawerItem().withName(R.string.drawer_item_crafting).withIcon(GoogleMaterial.Icon.gmd_build),
                        //new PrimaryDrawerItem().withName(R.string.drawer_item_tools).withIcon(GoogleMaterial.Icon.gmd_build),
                        new PrimaryDrawerItem().withName(R.string.drawer_item_links).withIcon(FontAwesome.Icon.faw_link),
                        new DividerDrawerItem(),
                        //new PrimaryDrawerItem().withName(R.string.drawer_item_settings).withIcon(GoogleMaterial.Icon.gmd_settings),
                        new PrimaryDrawerItem().withName(R.string.drawer_item_feedback).withIcon(FontAwesome.Icon.faw_envelope)
                        //new PrimaryDrawerItem().withName(R.string.drawer_item_changes).withIcon(Typeicons.Icon.typ_clipboard)
                )
                .build();
    }
    @Override
    public void onBackPressed() {
        if (drawerResult.isDrawerOpen()) {
            drawerResult.closeDrawer();
        } else {
            super.onBackPressed();
        }
    }
}

activity_main.xml:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/blackToolbar"
            android:elevation="4dp"
            android:minHeight="?attr/actionBarSize"
            android:paddingTop="@dimen/tool_bar_top_padding"
            android:transitionName="actionBar" />
</RelativeLayout>

build.gradle:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "org.enotboris.app"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile('com.mikepenz.materialdrawer:library:0.9.5@aar') {
        transitive = true
    }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'com.mikepenz:devicon-typeface:2.0.0.2@aar'
    compile 'com.mikepenz:material-design-iconic-typeface:2.2.0.2@aar'
    compile 'com.mikepenz:fontawesome-typeface:4.7.0.0@aar'
    compile 'com.mikepenz:octicons-typeface:3.2.0.2@aar'
    compile 'com.mikepenz:meteocons-typeface:1.1.0.2@aar'
    compile 'com.mikepenz:community-material-typeface:1.7.22.1@aar'
    compile 'com.mikepenz:weather-icons-typeface:2.0.10.2@aar'
    compile 'com.mikepenz:typeicons-typeface:2.0.7.2@aar'
    compile 'com.mikepenz:entypo-typeface:1.0.0.2@aar'
    compile 'com.mikepenz:devicon-typeface:2.0.0.2@aar'
    compile 'com.mikepenz:foundation-icons-typeface:3.0.0.2@aar'
    compile 'com.mikepenz:ionicons-typeface:2.0.1.2@aar'
    testCompile 'junit:junit:4.12'
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.enotboris.dayz">
    <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">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

LogCat:

01-25 15:29:09.899 2594-2594/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 java.lang.RuntimeException: The font for the given icon isn't registered!
                                                     at com.mikepenz.iconics.IconicsDrawable.icon(IconicsDrawable.java:121)
                                                     at com.mikepenz.iconics.IconicsDrawable.<init>(IconicsDrawable.java:89)
                                                     at com.mikepenz.materialdrawer.model.PrimaryDrawerItem.convertView(PrimaryDrawerItem.java:190)
                                                     at com.mikepenz.materialdrawer.adapter.DrawerAdapter.getView(DrawerAdapter.java:125)
                                                     at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
                                                     at android.widget.AbsListView.obtainView(AbsListView.java:2271)
                                                     at android.widget.ListView.makeAndAddView(ListView.java:1769)
                                                     at android.widget.ListView.fillDown(ListView.java:672)
                                                     at android.widget.ListView.fillSpecific(ListView.java:1330)
                                                     at android.widget.ListView.layoutChildren(ListView.java:1612)
                                                     at android.widget.AbsListView.onLayout(AbsListView.java:2106)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1217)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
                                                     at android.view.View.layout(View.java:13754)
                                                     at android.view.ViewGroup.layout(ViewGroup.java:4364)
                                                     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1868)
                                                     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1689)
                                                     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
                                                     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4214)
                                                     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
                                                     at android.view.Choreographer.doCallbacks(Choreographer.java:555)
                                                     at android.view.Choreographer.doFrame(Choreographer.java:525)
                                                     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
                                                     at android.os.Handler.handleCallback(Handler.java:615)
                                                     at android.os.Handler.dispatchMessage(Handler.java:92)
                                                     at android.os.Looper.loop(Looper.java:137)
                                                     at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:511)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                     at dalvik.system.NativeStart.main(Native Method)

Пример:

Использовал иконки "FontAwesome"

Использовал "GoogleMaterialDesign" и другие иконки

Answer 1

Решить вашу проблему можно так

Iconics.registerFont(new GoogleMaterial());

Связано это с тем, что данная библиотека включает в себя Android-Iconics. Подробнее можно почитать здесь

READ ALSO
FBX binary как прочитать?

FBX binary как прочитать?

мне нужно прочтитать именно fbx binary(не предлагать fbx ascii)(хотел написать конвертер именно для java)

407
Как вытащить из базы имя пользователя

Как вытащить из базы имя пользователя

Я сделал регистрацию, запихнул данные в sqlite, потом сделал вход, где проверял все данные с таблице, если пароль правильный, то пользователь...

477
Как по нажатию запустить скрипт?

Как по нажатию запустить скрипт?

Всем привет ребятаПишу приложение на web-e

394