2013-07-06 39 views
0

我是新來的java和android開發,我正在努力與我試圖寫一個應用程序。從不同的活動保存textview到sd卡

基本上應用程序是爲曲棍球隊我教練,我試圖從遊戲記錄統計。

我有應用程序正在運行,除了我希望能夠將遊戲結束時的統計信息保存到SD卡上的文件中,以便稍後可以訪問以進行復查並重置爲新的遊戲可以被記錄下來。

目前我有一個包含一個EditText字段,以便我能說出我想要的文件時,保存按鈕被按下一個新的活動開放,但我不能工作了如何從活動獲得的信息,其中信息被記錄。

到目前爲止,我有一個名爲Savetosd類加載它包含以下代碼:

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.OutputStreamWriter; 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class Savetosd extends Activity implements OnClickListener { 

Button buttonsave; 
EditText filename; 
boolean isSDAvail = false, isSDWriteable = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.settings); 
    buttonsave = (Button) findViewById(R.id.buttonsave); 
    filename = (EditText) findViewById(R.id.filename); 
    buttonsave.setOnClickListener(this); 
    checkSDCard(); 
} 

private void checkSDCard() { 
    // TODO Auto-generated method stub 
    String state = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     // write 
     isSDAvail = true; 
     isSDWriteable = true; 
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     // read only 
     isSDAvail = true; 
     isSDWriteable = false; 
    } else { 
     // stink 
     isSDAvail = false; 
     isSDWriteable = false; 
    } 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.buttonsave: 
     Log.d("Hockey", "Games"); 
     if (isSDAvail && isSDWriteable) { 
      File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
      String name = filename.getText().toString(); 
      File file = new File(path, name + ".txt"); 

      try { 
       path.mkdirs(); 
       FileOutputStream fOut = new FileOutputStream(file); 
       OutputStreamWriter myOutWriter = 
             new OutputStreamWriter(fOut); 
       myOutWriter.write(R.layout.activity_main); 
       myOutWriter.close(); 
       fOut.close(); 
       Toast.makeText(getBaseContext(), 
         "Done writing SD " +filename.getText(), 
         Toast.LENGTH_SHORT).show(); 
      } catch (Exception e) { 
       Toast.makeText(getBaseContext(), e.getMessage(), 
         Toast.LENGTH_SHORT).show(); 
      } 
      finish(); 
     } 
     break; 
    } 
} 
} 

正在創建一個文件,但沒有什麼在它我想我不能告訴它哪個textviews和他們的價值觀,但我無法解決如何做到這一點。此外,該文件正在被創建在內存中的下載目錄中,因爲它被告知,但我希望它被保存在SD卡上,我該怎麼做?

+0

這些可能有所幫助:http://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder和http://stackoverflow.com/questions/4531396/get-value-of-a -edit-text-field goodluck –

回答

0

你爲什麼打這個電話?

myOutWriter.write(R.layout.activity_main); 

另外,如果你不想寫文件的下載目錄,然後簡單的路徑從

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 

改變

String path = Environment.getExternalStorageDirectory() + "/HockeyGameData.txt" 
File file = new File(path); 

或任何你希望把你的文件。這是有道理的,該文件正在創建,但我不明白你在哪裏寫你的TextView的結果。如果您從其他Activity獲取TextView數據,則需要將該String傳遞到此活動中,該活動負責寫入外部存儲。

當然,您可以重新格式化您的代碼,並在單個活動中完成所有邏輯。我不明白爲什麼2項活動是你想要完成的事情所必需的。