从EditTxt中多次获取文本

时间:2018-06-09 09:44:13

标签: java android

助理Android 我在编写代码时遇到了一些问题 我尝试从EditTexT获取文本两次,而不必重复if else

示例: 当用户写I'm hungry时 用what do you want to eat这个词回答 用户通过一个idetict:hamburger

再次写入该单词

对我来说如下:

public class assisstant extends AppCompatActivity {

    private EditText replaya;
    private TextView mview;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_new__panda);


        replaya = (EditText) findViewById(R.id.massage);
        mview = (TextView) findViewById(R.id.pp);

    }


    public void replay (){

        String massage = replaya.getText().toString().trim();


        String[] massage_TO_Split = massage.split(" ");
        String line;
        StringBuilder replay = new StringBuilder();

        for (int i = 0; i < massage_TO_Split.length; i++) {

            line = massage_TO_Split[i];
            replay.append(line.trim());
        }

        String re = replay.toString();

        if (re.contains("hungry")) {

            mview.setText("What do you want to eat ?");
                    if (re.contains("Hamburger")){

                        mview.setText("Would you like me to order you a meal?");
                    }
        }

    }


}

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=".Test_new_Panda">

    <TextView
        android:id="@+id/Message_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="76dp"
        android:text="TextView" />

    <EditText
        android:id="@+id/user_Message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="199dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name" />

    <Button
        android:id="@+id/Send_Message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="210dp"
        android:text="send" />
</RelativeLayout>

这里的问题是我无法再次访问if/else。 单击发送按钮时,仅重复第一个操作,第一个条件已达到,因此我无法在第一个条件下完成第二个条件

1 个答案:

答案 0 :(得分:0)

我的代码块丢失了,我无法查看您从哪里调用 replay()或任何onClickListener集。

因为在你的另一个if语句中有一个if语句,所以第二个if只能在第一个为真时执行。

此外,您正在使用 contains(),这意味着如果用户写了&#34;饥饿的汉堡&#34;你直接跳到&#34;你想要我点餐吗?&#34;。

如果您正在尝试使用自然响应算法,那么您最好查看专用框架,但仅针对此示例,我将定义两个不同的onClickListener并从那里开始。

public class OnCommandDetectListener implements View.OnClickListener {

    @Override
    public void onClick(View view) {
        if( replaya.getText().toString().contains("hungry") ) {
            button.setOnClickListener(new OnFoodDetectListener());
            mview.setText("What do you want to eat ?");
            replaya.setText("");// This empties the EditText
        }
    }
}

public class OnFoodDetectListener implements View.OnClickListener {

    @Override
    public void onClick(View view) {
        if( replaya.getText().toString().contains("Hamburger") )
            mview.setText("Would you like me to order you a meal?");
    }
}

请记住将此添加到您的onCreate:

button = findViewById(R.id.Send_Message);
button.setOnClickListener( new OnCommandDetectListener() );

希望这能指出你正确的方向。