Java 若我在edittext中输入的单词并没有来自服务器的数据,请制作Toast

Java 若我在edittext中输入的单词并没有来自服务器的数据,请制作Toast,java,android,Java,Android,我想干杯,如果它不会收到类似的结果,我在编辑文本中输入的话,它应该干杯我“没有结果”。但当它在0.5秒后得到数据时。所以,当我点击按钮进行检查时,首先它会敬酒“无结果”,然后获取数据并在recyclerview中显示它们。我需要的是,如果没有类似的词,它会在结尾向我吐司“没有结果” ActivitySearch.java String text = txtsearch.getText().toString(); new AsyncTaskSearch("http://192.168.1.100/

我想干杯,如果它不会收到类似的结果,我在编辑文本中输入的话,它应该干杯我“没有结果”。但当它在0.5秒后得到数据时。所以,当我点击按钮进行检查时,首先它会敬酒“无结果”,然后获取数据并在recyclerview中显示它们。我需要的是,如果没有类似的词,它会在结尾向我吐司“没有结果”

ActivitySearch.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 "";
    }

}
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更改或其他内容