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
相关产品推荐
相关产品推荐

