当我点击一个按钮时,确实在LinearLayout中,我在这一行上出现了这个错误:
LinearLayout ll = (LinearLayout) view;
我的方法如下:
public void adjDoa(final View view) {
final CharSequence[] items = {"Get on with it!", "Doable!", "Maybe, maybe not.", "Unlikely!", "When pigs fly!"};
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(GetItActivity.this);
dialogBuilder.setTitle("Choose doability!");
dialogBuilder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
LinearLayout ll = (LinearLayout) view;
TextView text = (TextView)ll.findViewById(R.id.tViewChDoa);
text.setText(items[which]);
}
});
dialogBuilder.create().show();
}
这是什么意思?
答案 0 :(得分:11)
虽然它可以像sockeqwe's answer一样简单。如果您已将布局XML的一部分复制/粘贴/移动到XML的另一部分,则有时会发生此错误。如果是这种情况,请通过Project清除项目 - >清洁将解决这个问题。
在这种特殊情况下,您似乎想要按钮的父级,在这种情况下,您需要像这样调用view.getParent();
:(这里我将类型转换为ViewGroup而不是LinearLayout,因为它确实无关紧要父母是哪种布局)
ViewGroup ll = (ViewGroup) view.getParent();
如果您只有一个ID为tViewChDoa
的视图,则在获得该视图之前无需获取LinearLayout
,如果您的活动中包含此代码,那么这将有效:
TextView text = (TextView) findViewById(R.id.tViewChDoa);
答案 1 :(得分:2)
您在adjDoa(最终视图)中作为参数传递的视图是一个Button而不是LinearLayout!
因此无法将其强制转换为LinearLayout并引发此异常。
检查传递给此方法的参数