字符串比较无法正常工作

问题描述 投票:-1回答:2

我在这里阅读了很多相关/相似的问题!但是没有任何帮助,这就是为什么决定要问

如您所见,在错误中,输入为“” 1“(为确保将其设置为EditText值,您可以在屏幕截图中看到它),并且抛出错误!我尝试了所有可能的方式进行比较,例如

if ( responseText.trim().equals( "1" ) ) //(NOT WORKING, RETURNS FALSE)
if ( responseText.trim().startsWith( "1" ) ) //(NOT WORKING, RETURNS FALSE)
if ( responseText.trim() == "1" ) //(NOT WORKING, RETURNS FALSE)

并且responseText为1然后我尝试将字符串转换为整数,如第一个屏幕截图所示这是我的代码

private void sendOtpMessage(FancyButton btnSendOtp, FancyButton btnVeriOtp, EditText inputOtp, JSONObject item) {
    String CtgryCd;

    try {
        CtgryCd = item.getString("row_id");
    } catch (JSONException e) {
        mActivity.showMessage(getString(R.string.txt_error), e.toString());
        return;
    }

    btnSendOtp.setEnabled(false);
    btnVeriOtp.setEnabled(false);
    inputOtp.setEnabled(false);

    RequestParams requestParams = new RequestParams();
    requestParams.put("Action", "SendConfirmationOTP");
    requestParams.put("CtgryCd", CtgryCd);

    mActivity.showProgress();
    mConnection.connectTo(
            "scripts/ConfirmationFiling.php",
            requestParams,
            new ResponseHandler() {
                @Override
                public void onSuccess(String responseText) {
                    mActivity.hideProgress();
                    int response = Integer.parseInt(responseText.trim());

                    if (response == 1) {
                        btnSendOtp.setVisibility(View.GONE);
                        btnVeriOtp.setEnabled(true);
                        inputOtp.setEnabled(true);

                        Toast.makeText(mActivity, getString(R.string.msg_otp_sent), Toast.LENGTH_SHORT).show();
                    }
                    else {
                        onError(getString(R.string.error_otp_sent));
                    }
                }

                @Override
                public void onSuccess(byte[] responseBytes) {

                }

                @Override
                public void onError(String message) {
                    btnSendOtp.setEnabled(true);
                    mActivity.hideProgress();
                    mActivity.showMessage(getString(R.string.txt_error), message);
                }
            }
    );
}
android
2个回答
0
投票
您正在依赖服务(无论远程)仅接收原始int。使用Intever.Valueof()是安全的,因为它接受多种类型作为参数。

int response = Integer.parseInt(responseText.trim()); //should be int response = Integer.ValueOf(responseText.trim());

See this for more解释。

0
投票
根据我的观察,您的responseText似乎是null,因此是NullPointerException。考虑调试您的应用程序并发布stacktrace,因为仅凭代码几乎不可能理解您的问题。
© www.soinside.com 2019 - 2024. All rights reserved.