2015-12-02 79 views
0

我需要更新一个textView与远程db MYSQL数据,但我有一个问题,当我尝试更新AsyncTask中的textview.I尝试了一切,但它总是给我一个无效的textview。 这是我的代码:在AsyncTask setText android

public class Credits extends Activity implements OnClickListener{ 

private Button home; 
private String user; 
public TextView totSpesa; 
private ProgressDialog pDialog; 


JSONParser jsonParser = new JSONParser(); 

private static final String URL = "http://**********/services.php"; 


private static final String TAG_SUCCESS = "success"; 
private static final String TAG_MESSAGE = "message"; 
private static final String TAG_ERROR_MESSAGE = "error_msg"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_credits); 
    user=PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("id", ""); 
    totSpesa= (TextView)findViewById(R.id.tot_spesa); 

    home = (Button)findViewById(R.id.home_btn); 

    home.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.home_btn: 
     Intent i = new Intent(Credits.this, MainActivity.class); 
     startActivity(i); 
     break; 

    default: 
     break; 
    } 
} 

class AttemptCredits extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    boolean failure = false; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(Credits.this); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 

    } 

    @Override 
    protected String doInBackground(String... args) { 
     // TODO Auto-generated method stub 


     //Intent in = getIntent(); 
     //user = in.getStringExtra("id"); 
     String tot_spesa=""; 
     try { 

      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("tag", "get_credits")); 
      params.add(new BasicNameValuePair("username", user)); 

      Log.d("request!", "starting"); 

      JSONObject json = jsonParser.makeHttpRequest(
        URL, "POST", params); 

       tot_spesa=json.getString("tot_spesa");  


     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return tot_spesa; 



    } 
    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    @Override 
    protected void onPostExecute(String tot_spesa) { 

     totSpesa.setText(tot_spesa); 

    } 

} 


} 
+0

你确定没有异常的doInBackground里面扔? – Lal

+0

是的,我也尝试在postexecute中设置一个文本,但没有结果 – Rivas202

+3

但是在使用'new AsyncTask()。execute(“”)'启动'AsyncTask'? –

回答

4

也许我失去了一些东西,但我不认为你实际上是启动您AsyncTask

尝试做:

new AttemptCredits().execute(user); 

onCreate, 并获得doInBackground用户与

user = args[1];