2017-03-14 8 views
0

設定の設定文字列を別の文字列に追加しようとすると、問題が発生しました。他のアクティビティの静的オブジェクトから共有プリファレンスを呼び出す?

現在、私がしている:しかし、Androidのメーカーは参照できない「非静的フィールドの好み "私に言っている

public class MyApp extends Application { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    public static final String USER_LOGIN = "https://" + preferences.getString(SettingsFragment.USER_SITE, ""); 

@Override 
public void onCreate(){ 
    super.onCreate(); 

    myFunction(USER_LOGIN); 
} 

public class MyApp extends Application { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    public static final String USER_LOGIN = "https://example.com"; 

@Override 
public void onCreate(){ 
    super.onCreate(); 

    myFunction(USER_LOGIN); 
} 

私はこれを達成しようとしている何静的コンテキストから "このフィールドをどのように参照することができますか?

+1

ただ静かに環境変数を置く.. – JackTurky

+0

@JackTurkyありがとう!私はこれを行うが、私は次のエラーが表示されます:非静的変数これは静的コンテキストから参照することはできません – Bloodlvst

答えて

0

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

をジャストonCreateの内側に割り当てる:

public class MyApp extends Application { 

    SharedPreferences preferences; 
    private String USER_LOGIN; 

    @Override 
    public void onCreate(){ 
     super.onCreate(); 

     preferences = PreferenceManager.getDefaultSharedPreferences(this); 
     USER_LOGIN = "https://" + preferences.getString(SettingsFragment.USER_SITE, ""); 

     myFunction(USER_LOGIN); 
    } 

} 
1

"SharedPreferences preferences"はオブジェクトのメンバーなので、静的メンバーは使用できません。だから、変更:

static SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
+0

助けてくれてありがとう! エラー:非静的変数これは静的コンテキストから参照することはできません – Bloodlvst

0

は、同じ活動であなたの関数ですか?はいの場合は静的なvarを渡さないようにしてください。 代わりに、 "myfunction"で直接アクセスしてください。 私はそのように呼び出して、同時に静的にする必要はありません。

+0

この関数はサイトのAPIライブラリからのものです – Bloodlvst

+0

なぜ静的変数を静的にする必要がありますか?私は見ていない。 – gvlachakis

関連する問題