Android: Почему этот код не позволяет мне устанавливать текст (с плавающей точкой?)?

#android #floating-point #textview #sharedpreferences

#Android #плавающая точка #textview #sharedpreferences

Вопрос:

     LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String bestProvider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(bestProvider);
    SharedPreferences settings = getSharedPreferences("cars4sale",0);
    SharedPreferences.Editor GPS = settings.edit();
    GPS.putFloat("latitude", (float)location.getLatitude());
    GPS.putFloat("longitude", (float)location.getLongitude());
    GPS.commit();

    TextView GPSTV = (TextView)findViewById(R.id.GPSTV);
    SharedPreferences coords = getSharedPreferences("cars4sale",0);
    String gpsstr = GPS.getFloat("gps", "");    
    GPSTV.setText(gpsstr);
  

Основная проблема в том, что eclipse хочет, чтобы я изменил getFloat на putFloat, а затем, когда я это делаю, он хочет, чтобы я сделал getInt, а затем переходит в цикл между float и Int. Я просто хочу сохранить число в поле textview!

Комментарии:

1. Что именно с вами происходит? Вы получаете исключение, TextView пуст и т.д.

2. Кажется, что много кода, который не имеет большого значения, ваш макет немного странный (я его немного почищу) и, пожалуйста, укажите реальную ошибку: когда что происходит, и кто не позволяет вам что делать и почему? тем не менее, я угадаю вашу проблему ниже 😉

Ответ №1:

Потому что coords — это sharedpreferences , и я не думаю, что вы хотите устанавливать там текст?

Ты не имеешь в виду

 GPSTV.setText(gpsstr);
  

Это:

 String gpsstr = GPS.getFloat("gps", "");    
  

Не работает, потому что GPS это ваш редактор, а не ваш sharedpreferences . Вам нужно это

 String gpsstr = String.valueOf(coords.getFloat("gps", 0));    
GPSTV.setText(gpsstr);
  

Комментарии:

1. ДА. Хороший улов, извините за опечатку :). Но основная проблема все еще сохраняется: он хочет, чтобы я изменил getFloat на putFloat, а затем, когда я это делаю, он хочет, чтобы я сделал getInt, а затем переходит в цикл между float и Int. Понятия не имею, почему

2. Хаха, раньше этого не было 🙂 .. Я посмотрю 🙂

3. Спасибо! Я могу предоставить вам полную функцию, если это тоже нужно, это просто кнопка