2013-04-21 54 views
-3

我有兩個班/活動:調用從活性2的方法在活動1

的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。該方法將一些數據存儲到內部存儲器。

這樣做的正確方法是什麼?我知道我應該做些什麼Context,但我不知道究竟是什麼。

+0

您不嘗試將活動結合在一起。創建第三個類,將該方法放在那裏並讓每個活動調用它。 – Simon 2013-04-21 15:47:45

回答

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

替代方法如果您不想製作第三課並且想要使用SecondClass。然後將此保存方法設置爲靜態。

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); 
+0

這樣做會阻止我使用FileOutputStream。給出以下錯誤:類型HighScoreHandler – MeesterPatat 2013-04-21 15:49:25

+0

@MeesterPatat未定義方法openFileOutput(String,int),您始終可以將ApplicationContext傳遞給該類的構造函數。 – 2013-04-21 15:50:40

+0

@MeesterPatat我已經更新了現在的答案只是檢查它。 – 2013-04-21 15:51:18

0

使save靜態方法和/或移動到其自身的靜態類(不活動)。

所以,你可以使用以下稱之爲:

SecondClass.save(name, data); 

,並把它定義爲如下:

public static void save(String filename, String data) 
{ 
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(); 
} 

} }