3

老实说,我不确定如何为此设置标题。我正在学习http://developer.android.com/training/basics/data-storage/shared-preferences.html并想让事情变得清楚一点。

假设我们有:

SharedPreferences sharedPref = getSharedPreferences(USERNAME, MODE_PRIVATE);

SharedPreferences.Editor editor = sharedPref.edit();

当我将鼠标悬停在 edit() 上(我使用 Eclipse IDE)时,我了解到

打开声明编辑器 android.content.SharedPreferences.edit()

公共摘要 SharedPreferences.Editor 编辑()

在 API 级别 1 中添加

为这些首选项创建一个新的编辑器,通过它您可以修改首选项中的 >data 并将这些更改自动提交回 SharedPreferences > 对象。

请注意,您必须调用 commit() 才能使您在编辑器中执行的任何更改实际显示在 SharedPreferences 中。

返回 返回 SharedPreferences.Editor 接口的新实例,允许您修改此 SharedPreferences 对象中的值。

所以我实际上在这里有3个小问题:

1/ edit() 是一个抽象方法,所以在哪个类中 edit() 被覆盖(我已经了解到位于 SharedPreferences 接口中的“public abstract SharedPreferences.Editor edit()”,所以肯定有一些类在那里实现这个接口)

2/ SharedPreferences.Editor 是一个接口。据我所知,无法实例化接口。上面的这个编辑器对象为什么可以接收 API 中所述的“SharedPreferences.Editor 接口的新实例”。

3/我刚开始学习Android几天,我这样学习是不是一个好方法,这意味着剖析一切让我清楚?

谢谢

4

1 回答 1

1

您应该了解的主要内容是,您不应该关心谁以及如何实现您收到的抽象类(或接口)。在这种情况下SharedPreferences,它由 Android 内部类实现(这意味着它对您不可用)SharedPreferencesImpl

换句话说,你不应该关心细节。接口只是描述了这个对象可以做什么(你应该相信它)。

PS 至于你正在学习的东西 - 这是一个很好的方法。

于 2013-07-27T13:47:41.497 回答