Android: 按钮被视为 tableLayout?

Android: Button being treated as tableLayout?

我正在为我的 android 设备编写一个应用程序,它在屏幕底部包含三个按钮。在我的 onCreate 方法中,我使用 findViewById() 将三个 Button 对象设置为其相应的视图。这是我写的代码:

public class MainActivity extends AppCompatActivity {

    Button btnAdd = null;
    Button btnEdit = null;
    Button btnDelete = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnAdd = (Button) findViewById(R.id.btnAdd);
        btnEdit = (Button) findViewById(R.id.btnEdit);
        btnDelete = (Button) findViewById(R.id.btnDelete);

        init(getApplicationContext());

        btnAdd.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                EventWriter.writeToFile(eventFile, getApplicationContext());
            }
        });
    }

    ...

}

我的 XML 如下所示,按钮元素在 RelativeLayout 中声明:

<Button
    android:id="@+id/btnDelete"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/scrollView1"
    android:layout_alignRight="@+id/scrollView1"
    android:layout_alignParentBottom="true"
    android:text="@string/txtBtnDelete" />

<Button
    android:id="@+id/btnAdd"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/scrollView1"
    android:layout_alignLeft="@+id/scrollView1"
    android:layout_alignParentBottom="true"
    android:text="@string/txtBtnAdd" />

<Button
    android:id="@+id/btnEdit"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:text="@string/txtBtnEdit" />

当我尝试在 Eclipse 中使用模拟器 运行 应用程序时,我在第 36 行 (btnDelete = (Button) findViewById(R.id.btnDelete);) 收到以下 LogCat 错误:

Caused by: java.lang.ClassCastException: android.widget.TableLayout cannot be cast to android.widget.Button

我在代码的前面确实有一个 TableLayout(位于 ScrollView 内)但不包含按钮:

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="wrap_content"
    android:layout_height="300dp"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="@+id/actvSearchEvent"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/actvSearchEvent"
    android:layout_above="@+id/btnAdd"
    android:layout_marginTop="32dp"
    android:background="@drawable/scrollview_border" >

    <TableLayout
        android:id="@+id/tlTable"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    </TableLayout>

</ScrollView>

我不明白我试图将 TableLayout 转换为 Button 的原因。有人有什么想法吗?

尝试清理构建文件夹,然后运行再次构建。

错误意味着您仍然指向带有滚动视图和table布局的布局。而且里面没有按钮。

您可以通过将按钮粘贴到 table 布局中轻松解决此问题,例如

<TableLayout...>
    <Button
        android:id="@+id/btnDelete"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignEnd="@+id/scrollView1"
        android:layout_alignRight="@+id/scrollView1"
        android:layout_alignParentBottom="true"
        android:text="@string/txtBtnDelete" />
    <Button
        android:id="@+id/btnAdd"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignStart="@+id/scrollView1"
        android:layout_alignLeft="@+id/scrollView1"
        android:layout_alignParentBottom="true"
        android:text="@string/txtBtnAdd" />
    <Button
        android:id="@+id/btnEdit"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="@string/txtBtnEdit" />
</TableLayout>