2014-12-04 4 views
0

У меня есть 3 вопроса:Редактировать данные в sharedpreferences

Во-первых, я пишу приложения для Android. Но со мной возникает странная проблема. В начале приложения, я проверяю, если переменная NUMBER_PROVIDED является «НЕТ» (значение по умолчанию), я открою другую деятельность по

intent = new Intent(this, InputMobileScreen.class); 
startActivityForResult(intent, REQUEST_MOBILE); 

После этого мне нужно предоставить свой номер телефона, чтобы обработать. Затем я обновлю имя переменной NUMBER_PROVIDED с «НЕТ» (значение по умолчанию) на «ДА». Я сохранил это значение в статической переменной и также напишу его в SharedPreferences.

Вот мой код для обновления глобальной статической переменной:

MainActivity.NUMBER_PROVIDED = "YES"; 

и значения обновления в SharedPreferences:

Context context = getApplicationContext(); 
SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit();     
editor.putString(getString(R.string.NUMBER_PROVIDED), "YES");     
editor.commit();setResult(Activity.RESULT_OK); 
      finish(); 

После редактирования в SharedPreferences, я называю editor.commit(), setResult () и завершите входную активность, чтобы вернуться к mainactivity. Приложение работает плавно на моих устройствах (ASUS zenphone 5, Android 4.4), но на HTC mini, похоже, что фиксация не удалась? Я не знаю почему? и как сделать activity.finish после совершения() в SharedPreferences тотально полная

Во-вторых, в мое приложение, я должен назвать одну функцию, чтобы получить MAC-адрес WiFi следующим образом:

WifiManager manager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    WifiInfo info = manager.getConnectionInfo(); 
    String macAddress = info.getMacAddress(); 
    if (macAddress == null) 
    { 
     macAddress = "00:00:00:00:00:00"; 
    } 
    return macAddress; 

На моих устройствах я получал свой MAC-адрес каждый раз, но на некоторых других устройствах (у меня есть журналы в моем приложении), иногда он не может получить MAC-адрес (возврат «00: 00: 00: 00: 00: 00»)). Как его решить?

В-третьих, когда я нахожусь на входной активности (имена InputAcitity). Я нажимаю кнопку «домой» на главный экран мобильного телефона, после чего я снова нажимаю кнопку запуска приложения для приложения, чтобы вернуться в приложение. Но экран показывает, что я в MainActivity (а не в InputActivity). Это происходит только в некоторых конкретных устройствах, не все, я не знаю, что, хотя я вызвал startActivityForResult из MainActivity, чтобы открыть InputActivity

любое предложение оценено. благодаря

+0

Использование отделки() или context.finish() для закрытия деятельности. –

ответ

0
  1. Для editor.commit() проблемы в некоторых устройствах; Есть три способа, которые вы можете попытаться решить

    я) пытаются использовать editor.apply()

    II) называют finish() в Runnable() нити внутри handler() с postdelayed() в течение нескольких милли секунд

    III) пытаются использовать AsyncTask с выполняющих совершать действия внутри doInbackground() и финишного действия actvity в onPostExecute

+0

Извините, я просто новичок в программировании для Android. Так вы могли бы привести мне пример об этом для второго и третьего пунктов? –

Смежные вопросы