1

私は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とAndroidAPIを調べましたが、マップが上記のいずれにも実装されていることを確認できません(見逃していない限り)。したがって、原則として、を呼び出すことはできませんKeySet()。では、どうすればこの呼び出しを行うことができKeySet()ますか?

うまくいけば、上記が何らかの意味をなすでしょう:/これを理解するのに役立つ正しい方向へのヘルプやポインタがあれば幸いです。

4

1 に答える 1

2

keySet()のすべてのキーのセットを返すメソッドですMap(public Set<K> keySet ())。したがって、メソッドはインポートされません。Mapはインポートされませんが、getAll()メソッドの戻りタイプはインポートさMap<String, ?>れるため、直接アクセスできます。

別々にフェッチする場合はgetAll()

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

次に、マップをインポートします。それ以外の場合は、マップに直接アクセスできます。

于 2012-12-17T13:00:41.157 に答える