2011-07-10 8 views
0

Eclipseを使用してAndroid上にアプリケーションを作成し、特定のことを行うのに少し問題があります。AndroidとEclipseのグローバル関数

私は現在何度も何度も何度も何度もタスクを繰り返す必要はないので、代わりにどのアクティビティからでも呼び出せる関数を実行しようとしています。

パブリッククラスを使用して新しいJavaファイルを作成することは正常に機能しているようですが、特定のことは機能しません。私は"The method getSharedPreferences(String, int) is undefined for the type Functions"のエラーを取得し、このコードは、元のアクティビティにするとき、絶対に大丈夫ですFunctions.loadPreferences();

ことによってそれを呼び出す

package com.android.packagename; 
import android.content.SharedPreferences; 
public class Functions 
{ 
public static final String PREFS_NAME = "PrefsFile"; 
SharedPreferences preferences; 

public void loadPreferences() 
{ 
    SharedPreferences preferences=getSharedPreferences(PREFS_NAME,0); 
    String username = preferences.getString("username", ""); 
} 
} 

。私はこれを追加しようとしました。そのような幸運はありません。私は何が欠けていますか?

おかげ

+0

静的関数とJavaについての本を読んでください。 Functions.loadPreferences()は、loadPreferencesが静的関数の場合に有効です。要約すると、static public void lP()またはFunctions f = new Functions();のいずれかを使用します。 f.lP()。 – gregory561

+0

この質問(http://stackoverflow.com/q/708012/778427)も読んでください。このようにして、グローバルクラスは 'Context'を持ちます。 –

答えて

0

代わりに定義されているコンテキストから導出されるので、コードが活性の動作あなたが使用しようとしているいくつかの他のクラスに含まれていますそれから、インスタンス化されたクラスオブジェクトを渡して、複数のアクティビティなどから利用できるようにします。

loadPreferences(this)を、動作するアクティビティから呼び出すと、他のものと同じ種類のパターンも同様に機能します。

あなたは正しいですが、Androidは物事を再利用できるようにするために少し考えます。

0

活性はgetSharedPreferences()メソッド場合

public void loadPreferences() 
{ 
    SharedPreferences preferences=getSharedPreferences(PREFS_NAME,0); 
    String username = preferences.getString("username", ""); 
} 

使用

public void loadPreferences(Context C) 
{ 
    SharedPreferences preferences=C.getSharedPreferences(PREFS_NAME,0); 
    String username = preferences.getString("username", ""); 
}