В некоторых устройствах, таких как Samsung Galaxy Grand Duos android 7.1.2, мой пользовательский тост с этим Exeption
java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.LinearLayout
at ir.mrchabok.chabokpassenger.Helpers.Helper.MyToast(Helper.java:196)
at ir.mrchabok.chabokpassenger.Activity.MapsActivity$4.onClick(MapsActivity.java:345)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:6244)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
И мой собственный код тоста:
public static void MyToast(Context context, String text){
Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG);
LinearLayout toastLayout = (LinearLayout) toast.getView();
TextView tvToast = (TextView) toastLayout.getChildAt(0);
tvToast.setTypeface(globTypeFace);
toast.show();
}
Как вы знаете, макет тоста - LinearLayout, и я не менял макет.
@PPartisan танки, это кажется правильным
@Radesh отлично работает в моем приложении, братан
java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.LinearLayout
Кажется, что представление - это тип RelativeLayout, а не LinearLayout. Итак, вы можете попробовать изменить LinearLayout на RelativeLayout.
Кстати, вам лучше использовать Toast # setView
Очевидно, Samsung использует другую реализацию для
Toast. По правде говоря, ваше решение немного взломано и основано на предположениях - я бы посоветовал вам воспользоваться альтернативным подходом, например, установить тип шрифта с помощьюSpannableString(см. Ответ это) или, если настройка важна, использовать настраиваемое представление для ваших тостов сToast#setView