0

当我点击一个按钮时,它确实在一个 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();
}

这是什么意思?

4

2 回答 2

11

虽然它可以像sockeqwe 的回答一样简单。如果您已将布局 XML 的一部分复制/粘贴/移动到 XML 的另一部分,有时可能会发生此错误。如果是这种情况,通过 Project -> Clean 清理项目将解决该问题。


在这种特殊情况下,您似乎想要按钮的父级,在这种情况下,您需要view.getParent();像这样调用:(这里我将类型转换为 ViewGroup 而不是 LinearLayout,因为父级的布局类型并不重要)

ViewGroup ll = (ViewGroup) view.getParent();

如果您只有一个带有 id 的视图,则tViewChDoa不需要在LinearLayout获得该视图之前获取,如果您的活动中有此代码,那么这将起作用:

TextView text = (TextView) findViewById(R.id.tViewChDoa);
于 2013-09-18T15:17:19.003 回答
2

您在 adjDoa(最终视图视图)中作为参数传递的视图是按钮而不是线性布局!

因此它不能被转换为 LinearLayout 并引发此异常。

检查您传递给此方法的参数

于 2013-09-18T15:14:43.753 回答