Java 若我在edittext中输入的单词并没有来自服务器的数据,请制作Toast
我想干杯,如果它不会收到类似的结果,我在编辑文本中输入的话,它应该干杯我“没有结果”。但当它在0.5秒后得到数据时。所以,当我点击按钮进行检查时,首先它会敬酒“无结果”,然后获取数据并在recyclerview中显示它们。我需要的是,如果没有类似的词,它会在结尾向我吐司“没有结果” ActivitySearch.javaJava 若我在edittext中输入的单词并没有来自服务器的数据,请制作Toast,java,android,Java,Android,我想干杯,如果它不会收到类似的结果,我在编辑文本中输入的话,它应该干杯我“没有结果”。但当它在0.5秒后得到数据时。所以,当我点击按钮进行检查时,首先它会敬酒“无结果”,然后获取数据并在recyclerview中显示它们。我需要的是,如果没有类似的词,它会在结尾向我吐司“没有结果” ActivitySearch.java String text = txtsearch.getText().toString(); new AsyncTaskSearch("http://192.168.1.100/
String text = txtsearch.getText().toString();
new AsyncTaskSearch("http://192.168.1.100/afgApp/search.php", text).execute();
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!Activity_Search.data.equals("")) {
Toast.makeText(Activity_Search.this, data, Toast.LENGTH_SHORT).show();
timer.cancel();
}else {
Toast.makeText(Activity_Search.this, "No results", Toast.LENGTH_SHORT).show();
}
}
});
}
},1,500);
Activity_Search.data = "";
public class AsyncTaskSearch extends AsyncTask{
public String link="";
public String text="";
public AsyncTaskSearch(String link,String text){
this.link=link;
this.text=text;
}
@Override
protected Object doInBackground(Object[] params) {
try{
String data= URLEncoder.encode("text","UTF8")+"="+URLEncoder.encode(text,"UTF8");
URL url=new URL(link);
URLConnection connection=url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter writer=new OutputStreamWriter(connection.getOutputStream());
writer.write(data);
writer.flush();
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder builder=new StringBuilder();
String line=null;
while((line=reader.readLine())!=null){
builder.append(line);
}
Activity_Search.data=builder.toString();
}catch (Exception e){
}
return "";
}
}
AscynktaskSearch.java
String text = txtsearch.getText().toString();
new AsyncTaskSearch("http://192.168.1.100/afgApp/search.php", text).execute();
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!Activity_Search.data.equals("")) {
Toast.makeText(Activity_Search.this, data, Toast.LENGTH_SHORT).show();
timer.cancel();
}else {
Toast.makeText(Activity_Search.this, "No results", Toast.LENGTH_SHORT).show();
}
}
});
}
},1,500);
Activity_Search.data = "";
public class AsyncTaskSearch extends AsyncTask{
public String link="";
public String text="";
public AsyncTaskSearch(String link,String text){
this.link=link;
this.text=text;
}
@Override
protected Object doInBackground(Object[] params) {
try{
String data= URLEncoder.encode("text","UTF8")+"="+URLEncoder.encode(text,"UTF8");
URL url=new URL(link);
URLConnection connection=url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter writer=new OutputStreamWriter(connection.getOutputStream());
writer.write(data);
writer.flush();
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder builder=new StringBuilder();
String line=null;
while((line=reader.readLine())!=null){
builder.append(line);
}
Activity_Search.data=builder.toString();
}catch (Exception e){
}
return "";
}
}
您必须将toast消息放入onPostExecute方法中您必须将toast消息放入onPostExecute方法中您可以在代码中进行以下更改:
public class AsyncTaskSearch extends AsyncTask<Void, Void, Boolean>{
public String link="";
public String text="";
boolean result = false;
public AsyncTaskSearch(String link,String text){
this.link=link;
this.text=text;
}
@Override
protected Boolean doInBackground(Object[] params) {
//write your logic to match your word
if(word matches){
result = true;
}else{
result = false
}
return result;
}
@Override
protected void onPostExecute(final Boolean success) {
if(success){
//word match found
//show success toast
}else{
//word match not found
//show failure toast
}
}
}
公共类AsyncTaskSearch扩展了AsyncTask{
公共字符串链接=”;
公共字符串text=“”;
布尔结果=假;
公共异步任务搜索(字符串链接、字符串文本){
this.link=link;
this.text=文本;
}
@凌驾
受保护的布尔doInBackground(对象[]参数){
//写下你的逻辑来匹配你的话
如果(单词匹配){
结果=真;
}否则{
结果=错误
}
返回结果;
}
@凌驾
受保护的void onPostExecute(最终布尔值成功){
如果(成功){
//找到单词匹配项
//致祝酒辞
}否则{
//找不到匹配的单词
//展示失败的祝酒词
}
}
}
您可以对代码进行以下更改:
public class AsyncTaskSearch extends AsyncTask<Void, Void, Boolean>{
public String link="";
public String text="";
boolean result = false;
public AsyncTaskSearch(String link,String text){
this.link=link;
this.text=text;
}
@Override
protected Boolean doInBackground(Object[] params) {
//write your logic to match your word
if(word matches){
result = true;
}else{
result = false
}
return result;
}
@Override
protected void onPostExecute(final Boolean success) {
if(success){
//word match found
//show success toast
}else{
//word match not found
//show failure toast
}
}
}
公共类AsyncTaskSearch扩展了AsyncTask{
公共字符串链接=”;
公共字符串text=“”;
布尔结果=假;
公共异步任务搜索(字符串链接、字符串文本){
this.link=link;
this.text=文本;
}
@凌驾
受保护的布尔doInBackground(对象[]参数){
//写下你的逻辑来匹配你的话
如果(单词匹配){
结果=真;
}否则{
结果=错误
}
返回结果;
}
@凌驾
受保护的void onPostExecute(最终布尔值成功){
如果(成功){
//找到单词匹配项
//致祝酒辞
}否则{
//找不到匹配的单词
//展示失败的祝酒词
}
}
}
在异步任务中,仅当异步任务在post execute()上完成任务后在后台线程中工作时,才会触发post execute()上的覆盖并在此处显示toast,因此,您应该将此处用于任何UI更改或其他在后执行异步任务覆盖中的内容,并在此处显示toast,因为触发后执行()上的任务完成后,异步任务在后台线程中工作,所以您应该将此处用于任何UI更改或其他内容