助理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
。
单击发送按钮时,仅重复第一个操作,第一个条件已达到,因此我无法在第一个条件下完成第二个条件
答案 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() );
希望这能指出你正确的方向。