java - 在 editText 中每次更改字符串时自动单击 saveButton

标签 java android android-edittext android-button

接收短信然后将EditText设置为msgBody

public class SmsBroadcastReceiver extends BroadcastReceiver {
//.....
     ((EditText)MainActivity.mThis.findViewById(R.id.editTextName)).setText(msgBody);}

错误是View中的this无法应用于android.view.View.Onclicklistiner

//onCreate
buttonSave.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            buttonSave.performClick(this);
        }
    });

点击buttonSave时消息会自动保存到SQLite并同步到Mysql

private void saveNameToServer() {
    final ProgressDialog progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Saving Name...");
    progressDialog.show();

    final String name = editTextName.getText().toString().trim();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_SAVE_NAME,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    progressDialog.dismiss();
                    try {
                        JSONObject obj = new JSONObject(response);
                        if (!obj.getBoolean("error")) {
                            //if there is a success
                            //storing the name to sqlite with status synced
                            saveNameToLocalStorage(name, NAME_SYNCED_WITH_SERVER);
                        } else {
                            //if there is some error
                            //saving the name to sqlite with status unsynced
                            saveNameToLocalStorage(name, NAME_NOT_SYNCED_WITH_SERVER);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    progressDialog.dismiss();
                    //on error storing the name to sqlite with status unsynced
                    saveNameToLocalStorage(name, NAME_NOT_SYNCED_WITH_SERVER);
                }
            }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("name", name);
            return params;
        }
    };

    VolleySingleton.getInstance(this).addToRequestQueue(stringRequest);
}

@Override
public void onClick(View view) {
    saveNameToServer();
}

是否有其他方法可以在 EditText 值更改时自动单击按钮?

最佳答案

无需调用 click buttonSave.performClick(this);,只需调用 saveNameToServer(); 方法即可保存数据。

buttonSave.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            //buttonSave.performClick(this); // remove, not required
            saveNameToServer(); // save your data
        }
    });

关于java - 在 editText 中每次更改字符串时自动单击 saveButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49033959/

相关文章:

Java - JSlider 自定义但加载时,它不显示相同的样式,它是如何预期的

java - 有没有办法删除 FCM 发送的推送通知数据消息?

java - 从智能卡读取证书

java - 如何捕获 EditText 上字符串的值?

Android - 限制只有一位小数点进入 EditText

java - 如何使用 Astyanax 进行 Cassandra CQL 查询?

安卓图标 : Home Screen vs Applications Menu

安卓房间 : Synchronous queries return null

javascript - React-native Android : Error calling AppRegistry. runApplication

android - 从 ListView 获取 EditText 值