2016-08-02 10 views
1
public static void GetAllPoints(final IGetAllPointsCallBack callBack) {  
    SharedPreferences entity = getSharedPreferences("settings",MODE_PRIVATE); 
    String savedValue = entity.getString("entityGUID",null); 
} 

getSharedPreferences内部の作業をされていない、私は別のクラスでは、その値を保存しながら、私のメソッドの内部でそれを呼び出す方法はありますか?アンドロイドgetSharedPreferencesがここで働いていない方法

私はこのような私の好みを保存しています:Contextのために公式ドキュメントを1として

public void showAllSpots() 
    { 
    DataService.GetAllPoints(newDataService.IGetAllChargingPointsCallBack() { 
    @Override 
    public void Success(ArrayList<ChargingSpot> chargingSpots) { 
     // 
    } 

    }); 
    } 
+0

どのようにプレフィックスを保存していますか? – Shaishav

+0

エラー/出力は何ですか?あなたがsharedpreferenceの中にデータを保存したことは確かです – SaravInfern

+1

["静的でないメソッドは静的コンテキストから参照できません"]という重複している可能性があります(http://stackoverflow.com/questions/4922145/non-static-method-cannot-静的コンテキストエラーから参照する) –

答えて

0

EntityType selectedItem = ApplicationController.entities.get(which); 
SharedPreferences.Editor savedValue = getSharedPreferences("settings",MODE_PRIVATE).edit(); 
savedValue.putString("entityGUID", String.valueOf(selectedItem.EntityGUID)); 
savedValue.apply(); 

私は別のクラスからアクセスしていますので、私の方法の静的であることを確認するために必要な、getSharedPreferences(...)は、staticではありません。したがって、staticの方法でアクセスすることはできません。

は、以下のようなあなたのメソッドを定義してみて、それが動作するはずです:

public void GetAllPoints(final IGetAllPointsCallBack callBack) {  
    SharedPreferences entity = getSharedPreferences("settings",MODE_PRIVATE); 
    String savedValue = entity.getString("entityGUID",null); 
} 

EDIT:コメントの返信を調べる際に、私は静的GetAllPoints(...)を維持するあなたの条件に気づきました。回避策は、呼び出しContextを渡し、そこからgetSharedPreferences(...)を呼ぶことになります。それはstaticされていないか、またはあなたは、このメソッドに引数の一つとしてContextを提供する必要があり、そのよう

public void GetAllPoints(final Context context, final IGetAllPointsCallBack callBack) {  
    SharedPreferences entity = context.getSharedPreferences("settings",MODE_PRIVATE); 
    String savedValue = entity.getString("entityGUID",null); 
} 
+0

しかし、静的を削除するとき、他のクラスは正しい? –

+0

そのクラスのインスタンスがなければ、_directly_アクセスできません。私は私の答えを編集しました。 – ridsatrio

+0

ありがとうございました。上記の質問を編集した最後の質問の1つ私が呼び出すメソッドの変更を反映する方法は? –

0

あなたの方法を変更するのいずれかの必要がありますあなたの方法は次のようになります:

public static void GetAllPoints(final Context context, final IGetAllPointsCallBack callBack) {  
    SharedPreferences entity = context.getSharedPreferences("settings",Context.MODE_PRIVATE); 
    String savedValue = entity.getString("entityGUID",null); 
} 

これは役に立ちます。

+0

これは私のソリューションとどのように違うのですか? – ridsatrio

関連する問題