2011-02-02 5 views
1

私のアプリケーションには、異なる方法で同じデータベースを使用する複数のアクティビティがあります。定期的に、データはアプリケーションの外部からデータベースに追加されます。だから、各アクティビティのデータベースをチェックするためにコードを複製するのではなく、いずれかのアクティビティから新しいエントリのデータベースをチェックするために使用できる単一のクラスを作成しようとしています。私は、fileInputStreamとopenFileInputメソッドを使用して、新しいデータベースエントリがアプリケーションにとって関心があるかどうかを判断するいくつかの設定を保持するファイルを開きます。各アクティビティでopenFileInputメソッドを使用すると、期待通りに機能しますが、自分のクラスで使用すると、openFileInput()メソッドが定義されていないというエラーが返されます。 java.io.FileInputStreamをインポートしましたが、エラーは解決しません。Android:自分のクラスでアクティビティ用に定義されたメソッドを使用するにはどうすればよいですか?

答えて

3

openFileInputはContextのメンバーです。アクティビティをクラスに(コンテキストとして)渡し、そこから呼び出す必要があります。

public class MyClass{ 
    protected Context mContext; 
    public MyClass(Context c) 
    { 
    mContext = c; 
    } 
    public void doSomething() 
    { 
    mContext.openFileInput(...) 
    } 
} 
+0

魅力的な作品です!どうもありがとう。 –

+0

@Todd Muirは答えを受け入れてくれてありがとう! – Damp

0

あなたは、継承を使用することができます。

public class ActivityWithDBManagementAbilities extends Activity{ 
    public YourAnswerType checkDB(YourParameterType parameter){ 
     //here the code that check the data base 
    } 
} 

、あなたの活動は、(実際の活動は、コードを複製することなく、父親のメソッドを使用)、そのクラスから延びています。例:

public class MyActivity1 extends ActivityWithDBManagementAbilities{ 

    //inside some method. 
    YourAnswerType dbStatus = checkDB(yourParam); 

} 

私はそれをテストしていませんが、動作するはずです。

関連する問題