2013-07-06 4 views
0

저는 Java 및 Android 개발에 익숙하지 않습니다. 글쓰기를 시도하는 앱에 어려움을 겪고 있습니다.다른 활동의 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 및 잡으려고 그들의 가치,하지만이 일을하는 방법을 해결할 수 없습니다. 또한 파일은 내부 메모리에 다운로드 디렉토리에 생성되고 있지만 그것이 sdcard에 저장되기를 원합니다. 어떻게해야합니까?

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

또한, 당신은 단순히 당신이 당신의 이름을 원하는대로

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

또는에

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

에서 경로를 변경 다운로드 디렉토리에 파일을 작성하지 않으려면 파일. 파일이 생성되는 것은 당연한 일이지만, TextView의 결과를 어디에 쓰는지는 알 수 없습니다. TextView 데이터를 다른 액티비티에서 가져오고 있다면,이 String을이 액티비티에 전달해야합니다.이 액티비티는 외부 저장소에 쓰는 것을 담당합니다.

물론 코드를 다시 포맷하고 단일 Activity 내에서 모든 로직을 수행 할 수 있습니다. 나는 왜 당신이 달성하고자하는 것에 2 가지 활동이 필요한지 알지 못합니다.

관련 문제