0

在阅读了一些关于我的应用程序的统计数据后,我发现更新 75% 的用户需要一个多月的时间。由于所有更新都非常重要,因此我提出了一个应用内警报,告诉用户有更新待处理。

有一个包含实际应用程序版本 (18) 的文本文件,存储在通过该DownloadText()方法获取的网络服务器中。这个数字进入isUpdatetxt并从带有 的不可显示字符中提取.substring(1, 3)。所以基本上,只剩下“18”了。

但有我的问题:isUpdatetxt == "18"返回错误,当它不应该的时候。

private class GetUpdate extends AsyncTask<Void, Void, Void>
{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Toast.makeText(getApplicationContext(), "Vérification de mise à jours", Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onPostExecute(Void result) {

        /** For debug reference*/
        Toast.makeText(getApplicationContext(), "*" + isUpdatetxt + "*" + " " + (isUpdatetxt.length()), Toast.LENGTH_LONG).show(); 
        if(isUpdatetxt == "18"){
            alertDialog.show();
        }
    }

    @Override
    protected Void doInBackground(Void... params) {
        isUpdatetxt = DownloadText(updateURL);
        isUpdatetxt = isUpdatetxt.substring(1, 3);
        return null;
    }

}
4

1 回答 1

6

如果你在 Java 中比较字符串,你应该使用 .equals()。

在 Java 中将字符串与 == 进行比较时,是在比较引用。

因此,您的 if 语句将类似于:

if(isUpdatetxt.equals("18")){
    alertDialog.show();
}
于 2012-05-09T01:17:53.793 回答