【问题标题】:Edit data in sharedpreferences在共享首选项中编辑数据
【发布时间】:2015-02-01 21:13:21
【问题描述】:

我有 3 个问题要问:

首先,我正在编写一个安卓应用程序。但是有一个奇怪的问题发生在我身上。 在应用程序开始时,我检查变量 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() 并完成输入活动以返回主活动。 该应用程序在我的设备(ASUS zenphone 5,android 4.4)上运行流畅,但在 HTC mini 上,看起来提交没有成功?我不知道为什么?以及如何在 SharedPreferences 中的 commit() 完成后使 activity.finish 完成

其次,在我的应用程序中,我必须调用一个函数来获取 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

任何建议表示赞赏。 谢谢

【问题讨论】:

  • 使用 finish() 或 context.finish() 关闭活动。

标签: android sharedpreferences mac-address


【解决方案1】:
  1. 针对某些设备中的editor.commit() 问题;您可以尝试三种方法来解决

    i) 尝试使用editor.apply()

    ii) 在handler() 内的Runnable() 线程中调用finish()postdelayed() 几毫秒

    iii) 尝试使用AsyncTaskdoInbackground() 中执行提交操作并在onPostExecute 中执行actvity 的完成操作

【讨论】:

  • 对不起,我只是 android 编程的新手。那么你能给我举一个关于第二点和第三点的例子吗?
猜你喜欢
  • 2013-02-01
  • 2011-06-25
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
相关资源
最近更新 更多