使用SharedPreferences.getAll()调用keySet()

时间:2012-12-17 12:56:33

标签: android map call sharedpreferences keyset

我是Java和Android的新手所以希望我的问题有意义(我想我知道我在问什么!)

我正在通过一本书中的示例工作,我有一个查询,其中包含以下声明:

String[] tags = savedSearches.getAll().keySet().toArray(new String[0]);

其中savedSearches是SharedPreferences对象。

savedSearches.getAll()会返回一个允许调用KeySet()的地图。我无法理解的是KeySet()呼叫是如何可能的。我的印象是,如果你要在你的代码中使用类/接口,那么你需要导入它或导入一个类/接口直接或间接扩展/实现调用的对象,在这种情况下是一个引用到地图。

我正在处理的示例导入以下内容:

import java.util.Arrays;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;

我看过Java和Android API,我看不到上面的任何一个地图是实现的(除非我错过了它!)所以原则上我不应该打个电话到KeySet()。那么怎样才能调用KeySet()

希望以上内容会有所帮助:/任何有助于理解这一点的帮助或指示都会非常感激。

1 个答案:

答案 0 :(得分:2)

keySet()是一种返回Map(public Set<K> keySet ())所有键的集合的方法。因此,不会导入方法。虽然未导入Map,但getAll()方法的返回类型为Map<String, ?>,因此可以直接访问。

如果您单独提取getAll()

Map<String, ?> map = preferences.getAll();

然后您将导入Map,否则您可以直接访问它。