Android 字符串变长将导致空值

Android 字符串变长将导致空值,android,Android,我试图从包含Facebook ID的字符串中获取一个“long”值,该ID是一个10位数字。我的函数是这样的: @Override public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) { try { final long opponentId; opponentId = jsonArra

我试图从包含Facebook ID的字符串中获取一个“long”值,该ID是一个10位数字。我的函数是这样的:

@Override
    public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {
        try {
            final long opponentId;            
            opponentId = jsonArray.getJSONObject(position).getLong("uid");
            String opponentName = jsonArray.getJSONObject(position).getString("name");
            Toast.makeText(this, "UID: " + opponentId + "\n" + "Name: " + opponentName, Toast.LENGTH_SHORT).show();

            SharedPreferences myPrefs = getSharedPreferences("user", MODE_WORLD_READABLE);
            String playerUidString = myPrefs.getString("uid", null);


            if (playerUidString == null) {
                Log.d(GlobalVars.TAG, "Empty UID");
                return;
            }

            Log.d(GlobalVars.TAG, "ID: " + playerUidString);
            Log.d(GlobalVars.TAG, "ID Long: " + String.valueOf(Long.getLong(playerUidString)));

//           long player_id = Long.getLong(playerUidString);
//          new GameRequest(getBaseContext(), player_id, opponentId);


        } catch (JSONException e) {
            Log.d(GlobalVars.TAG, e.getMessage());
        }
    }

您缺少一个事实,即
Long.getLong(String str)
不应该将字符串解析为Long,而是返回由该字符串表示的系统属性的Long值。 正如其他人所建议的,您实际需要的是
Long.parseLong(stringstr)


.

您必须使用Long.parseLong(您的字符串)


希望我能帮助您。

Log.d语句的输出是什么?您确定PlayerUIString包含什么吗?可能JSONObject在内部将id存储为字符串,并且不会自动转换为long。您可以通过查看原始JSON字符串并查看id是否包含在引号中来验证这一点。除此之外,只需使用Long.parseLong(playerUidString)就可以了。谢谢Android Coader,这正是问题所在。@user1000229欢迎您。我也从其他人那里学到了一些知识,现在我试着分享一点:)
06-29 11:06:37.823: D/I See It(16053): ID: 1089490706
06-29 11:06:37.823: D/I See It(16053): ID Long: null