2

我有两个 EditText,标题输入和 desc 输入。

    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" ?

4

3 回答 3

2

您应该只添加getText().toString()onClick(View view)Section 中。

 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);


        }
    });
于 2018-06-04T09:49:44.043 回答
1

您正在读取 edittext 值的位置不正确。那时您的 editText 必须具有空值(因为这是您尝试读取动态值的声明块)。

所以当你想动态读取一个值时,最好的地方是点击按钮来读取它。


在 onclick 按钮上移动值读取代码

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);

        }
    });
于 2018-06-04T09:49:41.433 回答
1

您所做的是,当 EditText 为空白时,您从 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" ?

不!它不会有问题,它只是输入类型,如果你设置它数字,用户将看到数字键盘并且只能输入数字到编辑文本。

于 2018-06-04T09:50:13.443 回答