从Activity1中的Activity2调用方法

时间:2013-04-21 15:44:18

标签: android class methods android-activity

我有两个课程/活动:

的Firstclass:

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();
    }
  }
}

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

这样做的正确方法是什么?我知道我应该对Context做些什么,但我不知道到底是什么。

3 个答案:

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

替代方法如果您不想创建Third类并且想要使用SecondClass。然后将此save方法设置为static。

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();
        }
    }
}

并从First Activity中调用此方法。

SecondClass.save(name, data);

答案 1 :(得分:0)

使save成为静态方法和/或将其移动到自己的静态类(非活动)。

所以你可以使用以下方法调用它:

SecondClass.save(name, data);

并将其定义如下:

public static void save(String filename, String data)
{

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

} }