2014-12-04 85 views
0

我有3个问题要问:在sharedpreferences中编辑数据

首先,我正在编写一个android应用程序。但是有一个奇怪的问题发生在我身上。 在开始使用应用程序,我检查,如果变量NUMBER_PROVIDED是“NO”(默认值),我会

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

之后打开另一个活动,我需要提供以处理我的电话号码。然后我会将变量名NUMBER_PROVIDED从“NO”(默认值)更新为“YES”。我将此值存储到一个静态变量中,并将其写入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( )并完成输入活动以返回主要活动。 该应用在我的设备(华硕zenphone 5,安卓4.4)上运行流畅,但在HTC mini上,它看起来像提交没有成功?我不知道为什么?如何使后提交()的activity.finish在SharedPreferences是总完整

其次,在我的应用程序,我必须调用一个函数来得到的WiFi MAC地址如下:

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中)。它只发生在一些特定的设备,不是全部,我不知道,虽然我从MainActivity调用startActivityForResult来打开InputActivity

任何建议表示赞赏。 感谢

+0

使用结束actvity的完成动作()或context.finish()关闭活动。 – 2014-12-04 04:46:06

回答

0
  1. 对于某些设备editor.commit()问题;有三种方法可以尝试解决

    我)尝试在里面handler()一个Runnable()线程使用editor.apply()

    ii)传召finish()postdelayed()为几毫秒的

    III)尝试使用AsyncTask与执行提交动作里面doInbackground()onPostExecute

+0

对不起,我只是android编程的新手。那么你能否给我一个关于第二点和第三点的例子? – 2014-12-04 06:48:17