2012-02-15 3 views
1

最初に私の英語には申し訳ありません;)私はAndroid用プロファイルマネージャーを作成していますが、いくつかのSharedPreferencesファイルからgetStringを作成してlistViewを作成します。それは私のコードの一部です:いくつかのSharedPreferencesファイルからgetStringを作成し、listViewを作成します。

private static final String PN = "profile_name"; 
private EditTextPreference editText; 
private SharedPreferences preferences; 

public class Profile_Preferences extends PreferenceActivity { 

... 

private void SavePreferences() { 

    String text= editText.getText().toString(); 
    preferences = getSharedPreferences("Profile_" + text, Activity.MODE_PRIVATE); //Here we created SharedPreferences file with name "Profile_"+ this what user write in editText 

    SharedPreferences.Editor preferencesEditor = preferences.edit(); 
    preferencesEditor.putString(PN, editText.getText()); 
    preferencesEditor.commit(); 

ユーザーがいくつかのプロファイルを実行していたので、たとえばProfile_home.xml、Profile_work.xml、Profile_something.xmlなどのファイルがあります。今、私はこのファイルからプロファイル名でlistViewを作成しません。

public class Tab_profiles extends ListActivity { 

ArrayList<String> listItems = new ArrayList<String>(); 
ArrayAdapter<String> adapter; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list); 

    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, listItems); 
    setListAdapter(adapter); 
... 

public void LoadList() {   

//It's a good idea to getString "profile_name" form every xml file with name "Profile_" + "" ? 
    preferences = getSharedPreferences("Profile_"+ "", Activity.MODE_PRIVATE); 

    String take_profile_name = preferences.getString("profile_name", null); 
    listItems.add(take_profile_name); 
    adapter.notifyDataSetChanged(); 

} 

しかし、これは動作しません...ログインlogcat:それは私の次のアクティビティの

FATAL EXCEPTION: MAIN 
java.land.Null.PointerException 
at android.widget.ArrayAdaper.createViewFromResource(ArrayAdapter.java:355) 
... 

私は今、それは間違っているwhoat ...

私を助けてくださいません。

:;)書き込みやコードのいずれかの答えと私のエラーのために申し訳ありませんありがとうござい

答えて

2
)あなたのコード内のいくつかの問題があります。

ユーザーがEditTextに "home"と入力すると、 "Profile_home"という名前の環境設定ファイルを作成し、そのファイル名を同じファイルに保存しますか?あなたが知っている名前を持つ別のファイルにユーザーが生成したファイル名を保存して、コード内でアクセスできるようにする必要があります。

第二の問題:

preferences = getSharedPreferences("Profile_" + "", Activity.MODE_PRIVATE); 
String take_profile_name = preferences.getString("profile_name", null); 

あなたが "Profile_" の設定を開くしようとしています。このファイルは存在しません(?)。 getStringの2番目のパラメータはnullであってはなりません。それ以外の場合は、文字列のリストにヌル参照を追加します。これは失敗します。それを空の文字列 ""に置き換えます。

編集:

private void SavePreferences() { 
    String text = editText.getText().toString(); 
    preferences = getSharedPreferences("ProfileNames", Activity.MODE_PRIVATE); 
    SharedPreferences.Editor preferencesEditor = preferences.edit(); 
    // increment index by 1 
    preferencesEditor.putInt("profile_count", preferences.getInt("profile_count", 0) + 1); 
    // save new name in ProfileNames.xml with key "name[index]" 
    preferencesEditor.putString("name" + (preferences.getInt("profile_count", 0) + 1), editText.getText()); 
    preferencesEditor.commit(); 
} 

public void LoadList() {   
    preferences = getSharedPreferences("ProfileNames", Activity.MODE_PRIVATE); 
    List<String> profileNames = new LinkedList<String>(); 
    int profileCount = preferences.getInt("profile_count", 0); 
    for (int i = 1; i <= profileCount; i++) { 
     profileNames.add(preferences.getString(name + i, "")); 
    } 
    listItems.addAll(profileNames); 
    adapter.notifyDataSetChanged(); 
} 
+0

はい:ここではすべてのカスタムという名前のプリファレンスを取得するには少しの回避策です。あなたは正しいのです。このコードは完了していませんが、最初はプロファイル名でlistViewを表示しませんでした。 2番目のパラメータにnullを追加すると、getStringの空の文字列 ""が表示され、logcatにエラーはありませんが、listViewには値が表示されません。 – user1211477

+1

listViewには値がありません。 LoadList()で開いている場合、キーに "profile_name"という文字列が含まれていないので、 ""が返されます。たとえばキー "profile_name"の "USERINPUT"を含むProfile_USERINPUT.xml – ottel142

+0

いくつかのプロファイルを作成すると、 "Home"というXMLファイル "Profile_home.xml"が生成され、ここには "profile_name"というキーがあります。しかし、どのようにすべてのsharedPreferences XMLファイルを検索し、listViewの "profile_name"を見る?どのように最初の "Profile_"からすべてのファイルを検索する? getSharedPreferences( "Profile_" + ""、Activity.MODE_PRIVATE)が悪いですか? H – user1211477

関連する問題