Edittext setText没有显示任何文本,但是记录getText().toString首先显示设置的文本



我遇到了一个非常奇怪的问题。

这是我的两篇编辑稿。

<EditText
android:id="@+id/tiekm"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="64dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:background="@drawable/edit_border"
android:hint="kms"
android:inputType="number"
android:maxLines="1"
android:gravity="center"
android:saveEnabled="false"
android:textAlignment="center"
android:theme="@style/EditTheme2"
app:layout_constraintEnd_toStartOf="@+id/tieamt"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/mode" />
<EditText
android:id="@+id/comment"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:background="@drawable/borders2"
android:gravity="top|start"
android:inputType="textMultiLine"
android:lines="8"
android:maxLines="10"
android:minLines="6"
android:padding="4dp"
android:scrollbars="vertical"
android:theme="@style/EditTheme1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titlec" />

这两个视图是from的一部分。这里我正在编辑一个保存的表单,保存的数据来自sqlitedb。我将文本设置为两个编辑文本,显示id为comment的编辑文本,但未显示tiekm。这两个视图的主题也是相同的,只是颜色不同,当我制作一个新表单并填写km编辑文本时,我会在键入值时正确地显示这些值。

comment.setText(m.getComment());
kms.setText(m.getKm());
Log.i(TAG, "km: " + m.getKm());
Log.i(TAG, "newExpense: km text " + kms.getText().toString());

MYlog:

2018-12-17 14:22:34.460 19140-19140/abc.sample I/TAFragment: km: 11 
2018-12-17 14:22:34.460 19140-19140/abc.sample I/TAFragment: newExpense: km text 11

我已经做了一个小时了,我还错过了什么?。

更新-我的pojo。

public class TravelModel {
String km,traveltype,date,location,comment;
double amount;
public TravelModel(String km, String traveltype, String date, String location, String comment, double amount) {
this.km = km;
this.traveltype = traveltype;
this.date = date;
this.location = location;
this.comment = comment;
this.amount = amount;
}
public String getKm() {
return km;
}
public void setKm(String km) {
this.km = km;
}
public String getTraveltype() {
return traveltype;
}
public void setTraveltype(String traveltype) {
this.traveltype = traveltype;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}

你必须像下面这样写

kms.setText(String.valueOf(m.getKm()));

因为getKm((返回int值。并且不能直接将int值设置为EditTextTextView。所以你需要把它转换成String,然后你必须把它设置成View

您可以尝试以下片段:

Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
kms.setText(m.getKm());
}
});

我认为如果你改变你的xml编辑文本字段样式,它可能会起作用。在这里,U使用了maxlines="1",并添加了一些具有有限高度="50dp"的边距值。所以我假设,'m.getKm(('值没有得到适当的空间来分配。

以新的风格,它将发挥作用。或者请提供您的完整xml/风格,它有助于通过解决方案获得原始原因

注意:我不知道我对你清楚吗,只是想想在50dp的空间25-30sp的文本不会正确显示。

最新更新