Android 吐司使人感到意外

Android 吐司使人感到意外,android,toast,classcastexception,Android,Toast,Classcastexception,在三星Galaxy Grand Duos android 7.1.2等一些设备中,我的定制祝酒词给出了这一例外 java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.LinearLayout at ir.mrchabok.chabokpassenger.Helpers.Helper.MyToast(Helper.java:196)

在三星Galaxy Grand Duos android 7.1.2等一些设备中,我的定制祝酒词给出了这一例外

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)
我的自定义Toast代码是:

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();
}
正如你所知,toast布局是线性布局,我没有更改布局

java.lang.ClassCastException:android.widget.RelativeLayout不能强制转换为android.widget.LinearLayout

这似乎是一种相对论,而不是线性布局。因此,您可以尝试将LinearLayout更改为RelativeLayout


顺便说一句,您最好使用Toast#setView

显然,三星对
Toast
s使用不同的实现。事实上,您的解决方案有点老套,而且依赖于假设——我建议您采取另一种方法,比如使用
SpannableString
(请参见答案)设置字体类型,或者,如果定制很重要,使用
Toast\setView
@PPartisan tanks为您的祝酒使用自定义视图,这似乎是真的correct@Radesh它在我的申请中运行良好,兄弟