Android:如何在我自己的类中使用为Activities定义的方法?

时间:2011-02-02 21:56:09

标签: java android

我的应用程序有多个以不同方式使用同一数据库的活动。数据会定期从我的应用程序外部添加到数据库中。因此,我没有复制代码来检查每个活动中的数据库,而是尝试创建一个可以从任何活动中使用的类来检查数据库中的新条目。我正在使用fileInputStream和openFileInput方法来打开一个文件,该文件包含一些首选项,这些首选项用于确定应用程序是否对新数据库条目感兴趣。在每个活动中使用openFileInput方法按预期工作,但在我自己的类中使用它会给出错误,指出openFileInput()方法未定义。我已导入java.io.FileInputStream,但错误仍然存​​在。

2 个答案:

答案 0 :(得分:3)

openFileInput是Context的成员。您应该将您的活动传递给您的班级(作为上下文)并从那里调用它。

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

答案 1 :(得分: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);

}

我没有测试过,但它应该有用。