浏览 3472 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-17
运行应用的时候出现了The application ** has stopped unexpectedly.Please try again 的错误,如下图:
通过debug发现异常信息为:
Caused by: java.lang.RuntimeException: This Toast was not created with Toast.makeText() at android.widget.Toast.setText(Toast.java:275) at cn.and.ToastActivity.onCreate(ToastActivity.java:20) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
分析andriod源码发现:
public void setText(CharSequence s) { if (mNextView == null) { throw new RuntimeException("This Toast was not created with Toast.makeText()"); } TextView tv = (TextView) mNextView.findViewById(com.android.internal.R.id.message); if (tv == null) { throw new RuntimeException("This Toast was not created with Toast.makeText()"); } tv.setText(s); }如果不指定view,则mNextView的值为null。就会抛出异常。另外使用第一种方式时,就算你为Toast设置好了View也不能这样调用:toast.setText(s); 会抛出This Toast was not created with Toast.makeText()异常。解决的办法是定义一个TextView,然后为TextView赋值,再加到XXLayout中, 使用setView(XXLayout)把XXLayout设置成Toast的View。
弹出提示的代码修改如下:
/** * 显示Toast * @param toastTxt 提示文本内容 */ private void showToast(String toastTxt) { Toast t = new Toast(this); t.setDuration(Toast.LENGTH_SHORT); LinearLayout layout = new LinearLayout(this); TextView textView = new TextView(this); textView.setText(toastTxt); // textView.setTextSize(16); layout.addView(textView); t.setView(layout); t.show(); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |