如何在Android中获得EditText的更新值



我是android的新手,在一个基本的屏幕上使用android应用程序的web服务。

我使用AsyncTask发布值并从web服务获取结果。在显示返回值之前,它可以正常工作。点击显示Toast消息时,我得到了TextView resultReturned的旧值

public class TestPost extends Activity{
private TextView result = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_screen);
    result = (TextView)findViewById(R.id.resultReturned);

    Button submit = (Button)findViewById(R.id.btnSubmit);
    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String[] strPost = new String[]{"value1", "value2"};
            SendAsyncRequest asyncSend = new SendAsyncRequest();
            asyncSend.execute(strPost);
            // ResultView retains old value and gets correct value on second click
            String returned = result.getText().toString();
            Toast.makeText(getApplicationContext(), returned, Toast.LENGTH_LONG).show();    
        }
    }); 
  }
public class SendAsyncRequest extends AsyncTask<String, Void, String>{
    private String fetchedData = "";
    @Override
    protected String doInBackground(String... params  ) {
        // perform async task
        return fetchedData;
    }
    @Override
    protected void onPostExecute(String result) {
            setReturedValue(result);
    }
}
private void setReturedValue(String data){
    result.setText(data);
}

那么,我如何获得TextView的更新文本值?

AsyncTask需要时间从请求中获得响应,在postExecute()方法中显示toast消息,像这样,并从onclick中删除。

@Override
protected void onPostExecute(String result) {
    Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();  
}

试试这个

submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String[] strPost = new String[]{"value1", "value2"};
        SendAsyncRequest asyncSend = new SendAsyncRequest();
        asyncSend.execute(strPost);
        // ResultView retains old value and gets correct value on second click
        String jsonResult;
        try {
            jsonResult=asyncSend.get();
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
        Toast.makeText(getApplicationContext(), jsonResult, Toast.LENGTH_LONG).show();    
        }
});     

并在doInBackground()中返回Json字符串。

最新更新