You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中ScrollView调用setText方法报错的解决办法求助

解决ScrollView调用setText报错的问题

嘿,别担心,第一次提问完全没问题~你猜的很准,问题确实出在ScrollView上!

问题根源

你在代码里把ScrollView实例当成TextView来调用setText()方法,但ScrollView作为滚动容器,根本没有setText()这个方法,这就是你持续报错的核心原因。看你的XML布局,textViewRecordCount其实是个ScrollView,它的作用是包裹可滚动的内容,而不是直接显示文本。

修复步骤

1. 修改XML布局,添加TextView用于显示记录数

把原来的ScrollView里的LinearLayout中加入一个TextView,专门用来展示记录计数。同时建议修改ScrollView的id,避免和TextView混淆:

<ScrollView 
    android:id="@+id/scrollViewRecords" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="8dp" 
    android:padding="1dp" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintHorizontal_bias="0.182" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/buttonCreateAppointment" 
    app:layout_constraintVertical_bias="0.146" >

    <LinearLayout 
        android:id="@+id/linearLayoutRecords" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" >

        <!-- 新增TextView承载记录数文本 -->
        <TextView
            android:id="@+id/textViewRecordCount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/textViewRecordCount" />

    </LinearLayout>
</ScrollView>

2. 修正Java代码,绑定正确的TextView控件

把代码中findViewById的目标改成刚才新增的TextView,同时变量类型也要对应成TextView:

public class Landing extends AppCompatActivity{
    public Button buttonProducts;

    public void countRecords(){
        int recordCount = new TableControllerAppointments(this).count();
        // 改为TextView类型,绑定正确的控件id
        TextView textViewRecordCount = findViewById(R.id.textViewRecordCount);
        textViewRecordCount.setText(recordCount + " records found.");
    }
}

补充说明

ScrollView是一个容器控件,主要用来包裹超出屏幕的内容实现滚动,它本身不具备文本显示能力。文本内容必须由TextView这类专门的文本控件来承载,这样调用setText()才是合法的。

内容的提问来源于stack exchange,提问作者Aaron Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:51:52