我有两个编辑文本,标题输入和描述输入。
final EditText naslov_comm = view.findViewById(R.id.naslov_comm);
final EditText opis_comm = view.findViewById(R.id.opis_comm);
final String inputnaslov = naslov_comm.getText().toString();
final String inputopis = opis_comm.getText().toString();
objavicom_btn = view.findViewById(R.id.objavicom_btn);
objavicom_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CommentDTO commentDTO_a = new CommentDTO(inputnaslov, inputopis);
sendNetworkRequest(id_post, user_pref, commentDTO_a);
}
});
每次单击我的按钮时,它都应该接受这些输入,但它返回空字符串
inputnaslov=""
inputopis=""
这是我的 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.hrle.android_portal.ReadPostActivity"
android:background="?android:windowBackground"
android:id="@+id/arpfc">
<EditText
android:id="@+id/naslov_comm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Unesite naslov"
android:inputType="text"
/>
<EditText
android:id="@+id/opis_comm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/naslov_comm"
android:hint="Unesite opis"
android:inputType="text" />
<Button
android:id="@+id/objavicom_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/opis_comm"
android:layout_alignParentEnd="true"
android:text="Objavi"
/>
最终可能导致此问题,或者可能是我的 xml 中的 android:inputType="text"?
您应该将getText().toString()
添加到onClick(View view)
部分中。
objavicom_btn = view.findViewById(R.id.objavicom_btn);
objavicom_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String inputnaslov = naslov_comm.getText().toString();
final String inputopis = opis_comm.getText().toString();
CommentDTO commentDTO_a = new CommentDTO(inputnaslov, inputopis);
sendNetworkRequest(id_post, user_pref, commentDTO_a);
}
});
读取编辑文本值的位置不正确。此时,您的 editText 必须具有空值(因为这是您尝试读取动态值的声明块(。
因此,当您想要动态读取值时,最好的地方是通过单击按钮读取它。
在单击按钮中移动值读取代码
inputnaslov = naslov_comm.getText().toString();
inputopis = opis_comm.getText().toString();
像下面一样
objavicom_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Read latest value of edittexts
inputnaslov = naslov_comm.getText().toString();
inputopis = opis_comm.getText().toString();
CommentDTO commentDTO_a = new CommentDTO(inputnaslov, inputopis);
sendNetworkRequest(id_post, user_pref, commentDTO_a);
}
});
你所做的是,当 EditText 为空时,你从它获得值,然后你进一步使用该空白字符串。 正确的方法是在用户单击按钮时获取EditText的文本。
final EditText naslov_comm = view.findViewById(R.id.naslov_comm);
final EditText opis_comm = view.findViewById(R.id.opis_comm);
findViewById(R.id.objavicom_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String inputnaslov = naslov_comm.getText().toString();
final String inputopis = opis_comm.getText().toString();
CommentDTO commentDTO_a = new CommentDTO(inputnaslov, inputopis);
sendNetworkRequest(id_post, user_pref, commentDTO_a);
}
});
更新
最终可能导致此问题,或者可能是我的 xml 中的 android:inputType="text"?
不!它不会有问题,它只是输入类型,就像你设置它的数字一样,用户将看到数字键盘,并且只能输入数字来编辑ext。