رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام دوستان عزیز من از Fragment برای برنامم استفاده کردم و حالا میخوام فونت اجزای برنامه رو عوض کنم و وقتی کد رو ست میکنم وقتی وارد فرگمنتی که فونت رو عوض میکنم برنامه بسته میشه اینم کدت

[shcode=java]

public class RegisterFragment extends Fragment {

public RegisterFragment() {

}

private EditText t_username, t_email, t_fname, t_lname, t_password,

t_password_confirm;

private Button btn_register, btn_reset;

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_register, container,

false);

Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "/fonts/BTRAFFIC.TTF");

btn_reset.setTypeface(font);

return rootView;

}

}

[/shcode]

و عکس میر فونتم گذاشتم

و لاگ

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): FATAL EXCEPTION: main[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): java.lang.RuntimeException: native typeface cannot be made[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.graphics.Typeface.(Typeface.java:147)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.graphics.Typeface.createFromAsset(Typeface.java:121)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at com.example.slidemenu.RegisterFragment.onCreateView(RegisterFragment.java:31)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.os.Handler.handleCallback(Handler.java:587)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.os.Handler.dispatchMessage(Handler.java:92)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.os.Looper.loop(Looper.java:130)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at android.app.ActivityThread.main(ActivityThread.java:3687)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at java.lang.reflect.Method.invokeNative(Native Method)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at java.lang.reflect.Method.invoke(Method.java:507)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)[/align]

[align=left]09-24 15:59:22.169: E/AndroidRuntime(3553): at dalvik.system.NativeStart.main(Native Method)[/align]

2015-09-24_5-25-20.png.1ae64cac7f7233bb73c7fd28ad10eb26.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام ! این کلاس رو توی فایل main Activity بزارید . دقیق paste کنید:

   public void overrideFonts(final Context context, final View v) {
       try {
           if (v instanceof ViewGroup) {
               ViewGroup vg = (ViewGroup) v;
               for (int i = 0; i < vg.getChildCount(); i++) {
                   View child = vg.getChildAt(i);
                   overrideFonts(context, child);
               }
           } else if (v instanceof TextView ) {
               ((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf"));
           }
       } catch (Exception e) {
       }
   }

 بعدش داخل فرگمنت برای تغییر فونت این کد رو بزنید : 

  overrideFonts(getActivity, view);

اگه بازم بسته شد لاگ کت کامل رو بزارید


یه سرچی کردم. این ارور مربوط به اینه که فایل فونتتون رو نمیخونه و یا پسوندش نا مناسبه.

با یه فونت دیگه تست کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوستان حل شد از کد زیر استفاده کردم داخل Fragment و حل شد با تشکر

[shcode=java]

public void overrideFonts(final Context context, final View v) {

        try {

            if (v instanceof ViewGroup) {

                ViewGroup vg = (ViewGroup) v;

                for (int i = 0; i < vg.getChildCount(); i++) {

                    View child = vg.getChildAt(i);

                    overrideFonts(context, child);

                }

            } else if (v instanceof TextView ) {

                ((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf"));

            }

        } catch (Exception e) {

        }

    }

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

علاوه بر اون فکر می کنم مشکل به خاطر این هم بوده که به جای

/fonts/BTRAFFIC.TTF

باید می نوشتید:

fonts/BTRAFFIC.TTF

یعنی یه بک اسلش اضافی بوده.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...