java中文版运行怎么是Run_java-如何使用run runOnUithread?

我正在使用的应用程序具有登录/注册,该登录/注册连接到mysql数据库.起初,我在UI线程上运行了所有程序,后来发现由于在Android的UI线程上运行较长的代码而无法正常工作.我试图编辑我的代码以在添加的新线程上运行长任务.

.现在我的应用程序注册了我在mysql中看到的结果,但是由于这个错误,我的应用程序一直关闭

android.view.ViewRootImpl$CalledFromWrongThreadException:

Only the original thread that created a view hierarchy can touch its views.

该错误是可以理解的,但我不知道如何将一个或多个View运行回UI线程.

我已经对runOnuithread进行了一些研究,但是我不知道将其放置在代码中的位置,或者天气我将之前添加的新线程放在错误的位置开始,请

谁能帮我解决这个问题

这是代码片段

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.register);

// Importing all assets like buttons, text fields

inputFullName = (EditText) findViewById(R.id.registerName);

inputEmail = (EditText) findViewById(R.id.registerEmail);

inputPassword = (EditText) findViewById(R.id.registerPassword);

btnRegister = (Button) findViewById(R.id.btnRegister);

btnLinkToLogin = (Button) findViewById(R.id.btnLinkToLoginScreen);

registerErrorMsg = (TextView) findViewById(R.id.register_error);

// Register Button Click event

btnRegister.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

/** According with the new StrictGuard policy, running long tasks on the Main UI thread is not possible

So creating new thread to create and execute http operations */

new Thread (new Runnable() {

@Override

public void run() {

//

String name = inputFullName.getText().toString();

String email = inputEmail.getText().toString();

String password = inputPassword.getText().toString();

UserFunctions userFunction = new UserFunctions();

JSONObject json = userFunction.registerUser(name, email, password);

// check for login response

try {

//

//

if (json.getString(KEY_SUCCESS) != null) {

registerErrorMsg.setText("");

String res = json.getString(KEY_SUCCESS);

if(Integer.parseInt(res) == 1){

// user successfully registred

// Store user details in SQLite Database

DatabaseHandler db = new DatabaseHandler(getApplicationContext());

JSONObject json_user = json.getJSONObject("user");

// Clear all previous data in database

userFunction.logoutUser(getApplicationContext());

db.addUser(json_user.getString(KEY_NAME), json_user.getString(KEY_EMAIL), json.getString(KEY_UID), json_user.getString(KEY_CREATED_AT));

// Launch Dashboard Screen

Intent dashboard = new Intent(getApplicationContext(), MainActivity.class);

// Close all views before launching Dashboard

dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(dashboard);

// Close Registration Screen

finish();

}else{

// Error in registration

registerErrorMsg.setText("Error occured in registration");

}

}//

} catch (JSONException e) {

e.printStackTrace();

}

}

}).start();

}

});

// Link to Login Screen

btnLinkToLogin.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent i = new Intent(getApplicationContext(),

LoginActivity.class);

startActivity(i);

// Close Registration View

finish();

}

});

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值