-3

我有两个课程/活动:

头等舱:

public class FirstClass extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }
  public void addData(String filename, String data); {
    SecondClass second = new SecondClass();
    second.save(name, data);
  }
}

二等:

public class SecondClass extends Activity {
  public void save(String filename, String data) {
    try {
      FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
      fos.write(data.getBytes());
      fos.close();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

如您所见,我想做的是从SecondClassin调用一个方法FirstClass。该方法将一些数据保存到内部存储中。

这样做的正确方法是什么?我知道我可能应该对 做点什么Context,但我不知道具体是什么。

4

3 回答 3

0

使它成为一个简单的java类。

public class ThirdClass
{
    public void save(String filename, String data, Context context)
    {
        try {
            FileOutputStream fos = context.openFileOutput(filename,Context.MODE_PRIVATE);
            fos.write(data.getBytes());
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

像在您的第一个活动中一样调用此方法。

ThirdClass third= new ThirdClass();
third.save(name, data,this);

替代方案如果您不想参加第三类并想使用第二类。然后将此保存方法设为静态。

public class SecondClass extends Activity
{
    //Oncreate method....

    public static void save(String filename, String data)
    {
        try {
            FileOutputStream fos = openFileOutput(filename,Context.MODE_PRIVATE);
            fos.write(data.getBytes());
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

并从第一个活动中调用此方法。

SecondClass.save(name, data);
于 2013-04-21T15:47:08.830 回答
0

制作save一个静态方法和/或将其移动到它自己的静态类(不是活动)。

因此,您可以使用以下方法调用它:

SecondClass.save(name, data);

并将其定义如下:

public static void save(String filename, String data)
{
于 2013-04-21T15:48:27.700 回答
0

您应该创建一个名为 SaveHelper 之类的类,它不扩展活动并添加一个静态方法,以便您可以这样做:FileHelper.save(...)

public class FileHelper {
public static void save(Context context, String filename, String data) {
try {
  FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE);
  fos.write(data.getBytes());
  fos.close();
} catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

} }

于 2013-04-21T15:48:58.080 回答