2017-03-14 48 views
-4

SharedPreferencesで少し問題があります。SharedPreferencesが断片化してアクティビティを読む

私は内部にいくつかの断片を含むタブ付きアクティビティを使用しています。私はそれの中にListViewを持っており、私はselectedItemのIDを取得したいと思います。

エラーが発生していることがわかりません。その後

listViewCours.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    { 

     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

      SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 

      SharedPreferences.Editor editor = sharedPref.edit(); 

      long itemid= listViewCours.getItemIdAtPosition(i); 

      String a = String.valueOf(itemid); 

      editor.putString("ItemId",a); 
      editor.commit(); 

     } 

    }); 

私はそれを読んしようとしているActivityから:私はFragmentに私のSharedPreferencesで書い

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    String cours = prefs.getString("ItemId",""); 
    int cours_id = Integer.parseInt(cours); 

私はそれを行う方法を知りませんが、その瞬間、私は他の活動でそのIDを取得することができません...

+0

あなたは 'PreferenceManager.getDefaultSharedPreferences(この)'、それを全体で使用を使用している場合、それは均一でください。 – Enzokie

+0

これは 'SharedPreferences sharedPref = getActivity()。getPreferences(Context.MODE_PRIVATE);'と 'SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);両方は同じでなければなりません。 – Piyush

答えて

0

あなたは2つの異なるタイプの設定を使用しています。 MODE_PRIVATEおよびデフォルトの共有設定。そのため、NULLポインタエラーが表示されます。 listItemの中

使用これを::

listViewCours.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{ 

    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 

     long itemid= listViewCours.getItemIdAtPosition(i); 

     String a = String.valueOf(itemid); 

     prefs.edit().putString("ItemId",a).apply(); 


    } 

}); 

・ホープ、このことができますだけで以下のコードを試してみてください。

+1

それは働いて、ありがとう! – David

+0

あなたが歓迎されていれば、それは受け入れられた回答としてマークすることができます。 – tahsinRupam

1

設定値:

SharedPreferences preferences = getActivity().getSharedPreferences("AppPrefs", MODE_PRIVATE); 
    SharedPreferences.Editor prefsEditor = preferences.edit(); 

    long itemid= listViewCours.getItemIdAtPosition(i); 
    String a = String.valueOf(itemid); 
    prefsEditor.putString("ItemId", a); 

活動でGET値:

SharedPreferences preferences = getSharedPreferences("AppPrefs", MODE_PRIVATE); 
    String ItemId=preferences.getString("ItemId", ""); 
関連する問題