我正在创建更新配置文件页面,并从数据库中获取数据后,我想设置edittext中的值,以便我可以编辑它们。当我尝试它时,它给了我错误。请告诉我该怎么做。谢谢!SetText对于EditText
这是我ProfileActivity.java类
package com.example.fproject;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class ProfileActivity extends Activity {
EditText firstnameBox, lastnameBox, departmentBox, officeBox, emailBox, phonenoBox, passwordBox, statusBox, confirm_passwordBox;
private Button register;
JSONParser jsonParser = new JSONParser();
private static final String TAG_SUCCESS = "success";
private ProgressDialog pDialog;
String user;
SessionManagement session;
GetIPAddress getIPaddress = new GetIPAddress();
private static String url_get_user_data; // products JSONArray
JSONArray data = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
session = new SessionManagement(getApplicationContext());
SharedPreferences sp = getSharedPreferences("login_pref", 0);
user = sp.getString(session.KEY_EMAIL, null);
url_get_user_data = getIPaddress.getIP()+"get_user_data_for_profile.php";
firstnameBox = (EditText)findViewById(R.id.update_firstname);
lastnameBox = (EditText)findViewById(R.id.update_lastname);
departmentBox = (EditText)findViewById(R.id.update_department);
officeBox = (EditText)findViewById(R.id.update_office);
emailBox = (EditText)findViewById(R.id.update_email);
phonenoBox = (EditText)findViewById(R.id.update_phoneno);
passwordBox = (EditText)findViewById(R.id.update_password);
confirm_passwordBox = (EditText)findViewById(R.id.update_confirm_password);
new GetUserData().execute();
register = (Button)findViewById(R.id.update_register);
register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
}
class GetUserData extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... arg0) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("email", user));
// getting JSON string from URL
JSONObject json = jsonParser.makeHttpRequest(url_get_user_data, "GET", params);
// Check your log cat for JSON reponse
Log.d("User Data: ", json.toString());
try {
// Checking for SUCCESS TAGh
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully received product details
JSONArray userObj = json
.getJSONArray("data"); // JSON Array
// get first product object from JSON Array
JSONObject user = userObj.getJSONObject(0);
//firstnameBox.setText(user.getString("firstname"));
firstnameBox.setText("lsdf;skdjf", TextView.BufferType.EDITABLE);
/*lastnameBox.setText(user.getString("lastname"));
departmentBox.setText(user.getString("department"));
officeBox.setText(user.getString("office"));
emailBox.setText(user.getString("email"));
phonenoBox.setText(user.getString("phoneno"));
passwordBox.setText(user.getString("password"));
statusBox.setText(user.getString("status"));
*/
} else {
// no products found
// Launch Add New product Activity
Intent i = new Intent(getApplicationContext(),
AdminHomeActivity.class);
// Closing all previous activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.profile, menu);
return true;
}
}
这是logcat的错误
04-06 22:31:25.725: E/AndroidRuntime(644): FATAL EXCEPTION: AsyncTask #1
04-06 22:31:25.725: E/AndroidRuntime(644): java.lang.RuntimeException: An error occured while executing doInBackground()
04-06 22:31:25.725: E/AndroidRuntime(644): at android.os.AsyncTask$3.done(AsyncTask.java:266)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.lang.Thread.run(Thread.java:1020)
04-06 22:31:25.725: E/AndroidRuntime(644): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
04-06 22:31:25.725: E/AndroidRuntime(644): at android.view.ViewRoot.checkThread(ViewRoot.java:3392)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.view.ViewRoot.invalidateChild(ViewRoot.java:597)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:645)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.view.ViewGroup.invalidateChild(ViewGroup.java:3691)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.view.View.invalidate(View.java:7141)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.widget.TextView.invalidateCursor(TextView.java:3866)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.widget.TextView.spanChange(TextView.java:6932)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.widget.TextView$ChangeWatcher.onSpanAdded(TextView.java:7058)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.text.SpannableStringBuilder.sendSpanAdded(SpannableStringBuilder.java:918)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:615)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:518)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.text.Selection.setSelection(Selection.java:74)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.text.Selection.setSelection(Selection.java:85)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.text.method.ArrowKeyMovementMethod.initialize(ArrowKeyMovementMethod.java:288)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.widget.TextView.setText(TextView.java:2814)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.widget.TextView.setText(TextView.java:2691)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.widget.EditText.setText(EditText.java:78)
04-06 22:31:25.725: E/AndroidRuntime(644): at com.example.fproject.ProfileActivity$GetUserData.doInBackground(ProfileActivity.java:100)
04-06 22:31:25.725: E/AndroidRuntime(644): at com.example.fproject.ProfileActivity$GetUserData.doInBackground(ProfileActivity.java:1)
04-06 22:31:25.725: E/AndroidRuntime(644): at android.os.AsyncTask$2.call(AsyncTask.java:252)
04-06 22:31:25.725: E/AndroidRuntime(644): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-06 22:31:25.725: E/AndroidRuntime(644): ... 4 more
谢谢!..请咨询我就做什么
您试图UI从后台线程改变。 –
是的,我试图从后台线程更改UI。 –
你不应该这样做:) –