Android 如何更改界面中TextView的文本
大家好。 实际上我正在Android Studio中做一个应用程序。 尝试更改属于对话框的TextView的文本时出现问题。 我认为问题是因为我试图在接口内部执行setText。 这是我的对话Android 如何更改界面中TextView的文本,android,interface,Android,Interface,大家好。 实际上我正在Android Studio中做一个应用程序。 尝试更改属于对话框的TextView的文本时出现问题。 我认为问题是因为我试图在接口内部执行setText。 这是我的对话 private void showDialogDeEspera() { AlertDialog.Builder builder = new AlertDialog.Builder(this); LayoutInflater inflater = getLayoutInflater();
private void showDialogDeEspera() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_de_carga_o_espera, null, false);
builder.setView(view);
dialogEspera = builder.create();
textEspera = view.findViewById(R.id.text_dialog_carga_o_espera);
progresoPing = view.findViewById(R.id.progress_carga_o_espera);
progresoPing.setVisibility(View.VISIBLE);
dialogEspera.show();
}
这是我的界面,在这里我得到了回应,我试图修改文本
ResponsePingWs rpw = new ResponsePingWs() {
@Override
public void responsePing(String error) {
validarRespuesta(error);
}
};
validarRespuesta方法用于尝试修改带有错误的文本
private void validarRespuesta(String error){
if (error.equals("")){
textEspera.setText("No se puede accesar al servisor");
SystemClock.sleep(3000);
Toast.makeText(this, "No se pudo acceder al servidor, revisar URL", Toast.LENGTH_SHORT).show();
dialogEspera.dismiss();
}else if (error.equals("success")){
textEspera.setText("Coneción exitosa!");
SystemClock.sleep(3000);
Toast.makeText(this, "El servidor respondió correctamente!", Toast.LENGTH_SHORT).show();
dialogEspera.dismiss();
}else if (!error.equals("") && !errorPing.equals("success")){
textEspera.setText(error);
SystemClock.sleep(3000);
Toast.makeText(this, "El servidor respondió con un mensaje de error", Toast.LENGTH_SHORT).show();
dialogEspera.dismiss();
}
}
如果有人有这方面的想法或解决方案,如果您能帮助我,我将不胜感激,谢谢 谢谢@Dhaval Shah
我用了runOnUiThread,如果有用的话
final ResponsePingWs rpw = new ResponsePingWs() {
@Override
public void responsePing(String error, Context context) {
runThread(error, context);
}
};
pingAPI(getApplicationContext(), rpw);
这就是我要实现的runThread方法
private void runThread(final String error, final Context context) {
new Thread() {
public void run() {
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (error.equals("")){
textEspera.setText("No se puede accesar al servisor");
SystemClock.sleep(3000);
Toast.makeText(context, "No se pudo acceder al servidor, revisar URL", Toast.LENGTH_SHORT).show();
dialogEspera.dismiss();
}else if (error.equals("success")){
textEspera.setText("Coneción exitosa!");
SystemClock.sleep(3000);
Toast.makeText(context, "El servidor respondió correctamente!", Toast.LENGTH_SHORT).show();
dialogEspera.dismiss();
}else if (!error.equals("") && !errorPing.equals("success")){
textEspera.setText(error);
SystemClock.sleep(3000);
Toast.makeText(context, "El servidor respondió con un mensaje de error", Toast.LENGTH_SHORT).show();
dialogEspera.dismiss();
}
}
});
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
您正在尝试从后台线程调用interfacePing方法吗?在android中,视图只能在主线程中修改。也许你可以试着把runOnUiThread放进去。事实上,我从截击响应监听器调用了我接口的方法