phpeproject.ir

مشکل فونت در Fragment

6 ارسال در این موضوع قرار دارد

سلام دوستان عزیز من از 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);

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


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

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

1 کاربر پسند دیده است

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


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

تست کردم بازم وقتی این فرگمت رو صدا میکنم برنامم بسته میشه

[shcode=java]

fragment = new RegisterFragment();

[/shcode]

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


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

سلام

داخل فرگمنت به جای context از getactivity استفاده کنید

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


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

دوستان حل شد از کد زیر استفاده کردم داخل 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

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

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری