ファイル名「main.xml」 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/TextView01" android:textSize="12pt" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/EditText01" android:textSize="12pt" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/Read" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/Read" /> <Button android:id="@+id/Save" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/Save" /> <Button android:id="@+id/Del" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/Del" /> </LinearLayout> ファイル名「strings.xml」 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, OutputText2Activity!</string> <string name="Read">書き込み</string> <string name="Save">読み込み</string> <string name="Del">削除</string> <string name="app_name">OutputText2</string> </resources> |
ファイル名「OutputText2Activity.java」
package and.roid.outputtext; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import android.app.Activity; import android.graphics.PixelFormat; import android.os.Bundle; import android.text.Editable; import android.view.Display; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class OutputText2Activity extends Activity implements OnClickListener{ public float disp_w,disp_h; private String text;//表示文字登録準備 static private final String FILE_PATH = "object.txt";//ファイルパス private EditText edit1;//エディットボックス準備 private Button Read;//読み込みボタン準備 private Button Save;//書き込みボタン準備 private Button Del;//削除ボタン準備 private TextView textView;//テキストビュー準備 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFormat(PixelFormat.TRANSLUCENT); Window window = getWindow(); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); WindowManager manager = window.getWindowManager(); Display disp = manager.getDefaultDisplay(); disp_w = disp.getWidth(); disp_h = disp.getHeight(); setContentView(R.layout.main); textView = (TextView) findViewById(R.id.TextView01);//テキストビュー表示 edit1 = (EditText)this.findViewById(R.id.EditText01);//テキストボックス表示 Read = (Button)this.findViewById(R.id.Read);//読み込みボタン表示 Read.setOnClickListener(this);//読み込みボタンクリック時動作 Save = (Button)this.findViewById(R.id.Save);//書き込みボタン表示 Save.setOnClickListener(this);//書き込みボタンクリック時動作 Del = (Button)this.findViewById(R.id.Del);//削除ボタン表示 Del.setOnClickListener(this);//削除ボタンクリック時動作 } //読み込みメソッド public String readText() throws IOException{ /* * 前回と変更なし */ FileInputStream in = this.openFileInput(FILE_PATH); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuffer sb = new StringBuffer(); String sbs; while ((sbs = reader.readLine()) != null) { sb.append(sbs); } in.close(); return sb.toString(); } //書き込みメソッド public void saveText(String text) throws IOException { /* * FileOutputStreamの引数2番目をMODE_PRIVATEに変更 * 色々試した結果今回のMODE_PRIVATEは上書きぽいのかな * 前回のは追記な感じ * FileOutputStreamはActivityクラスでとその他のクラス * での使用感がちょっと違い、引数も違ってくるのですね * 前回はDRAWING_CACHE_QUALITY_AUTOだったし・・・ * 前回と同じ追記にするにはMODE_APPENDなのかな * (MODE_APPENDで追記確認しました) */ FileOutputStream output = this.openFileOutput(FILE_PATH,MODE_PRIVATE); output.write(text.getBytes()); output.close(); } //削除メソッド public void DelText() throws IOException{ /* * 削除というよりも”なにもなし”を書き込む感じでうまくきました */ FileOutputStream output = this.openFileOutput(FILE_PATH,MODE_PRIVATE); output.write("".getBytes()); output.close(); } //クリック時動作 public void onClick(View view){ //何をクリックしたかで分岐し最後にテキストビュー //を表示更新 if(view == Read){ Editable et = edit1.getText(); text = et.toString(); try { saveText(et.toString()); } catch (IOException e) { e.printStackTrace(); } Toast toast = Toast.makeText(getApplicationContext(), "書き込みました:"+text, Toast.LENGTH_LONG); toast.show(); }else if(view == Save){ try { text = readText(); } catch (IOException e) { e.printStackTrace(); } Toast toast = Toast.makeText(getApplicationContext(), "読み込みました:"+text, Toast.LENGTH_LONG); toast.show(); }else if(view == Del){ try { DelText(); } catch (IOException e) { e.printStackTrace(); } Toast toast = Toast.makeText(getApplicationContext(), "削除しました:", Toast.LENGTH_LONG); toast.show(); } textView.setText(text); } } |
実行結果 |
![]() |
使用方法 |
テキストボックスに書き込んだら"書き込み"ボタンを押してセーブします。その時点でデータは保持されるので一度アプリを終了させてみます。もう一度アプリを立ち上げて、今度は"読み込み"ボタンを押してみましょう。前回保持されたデータが最上部に書き出されます。 これでアプリケーションのデータを保持する方法がわかりました。今回色々試した結果、データの書き込み方法に種類があるので、例えば書き込み時に","をテキストの最後に付け加えて追記書き込みにしてあげるとcsvファイルが出来上がり、データ管理などもできそうです。 さて、何をつくろうかな・・・それが一番の問題ですね・・ |
assetsフォルダに入れたtextファイルを読み込み表示 |
|
その1のコードを使用して連続したデータを取り込み分解 |
|
今までの読み込みこんだデータを図形に変換してみた! |
|
アプリケーション専用ファイルでの書き込み読み込み |
|
アプリケーション終了→次回起動時までデータの保持 |