代码之家  ›  专栏  ›  技术社区  ›  Cyberpks

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

  •  0
  • Cyberpks  · 技术社区  · 12 年前

    我是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的更新文本值?

    2 回复  |  直到 12 年前
        1
  •  1
  •   RajaReddy PolamReddy    12 年前

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

    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();  
    }
    
        2
  •  -1
  •   Ved    12 年前

    试试这个

    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();    
            }
    });     
    

    并将Json字符串返回 doInBackground() .