ファイル名「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のコードを使用して連続したデータを取り込み分解 |
|
今までの読み込みこんだデータを図形に変換してみた! |
|
アプリケーション専用ファイルでの書き込み読み込み |
|
アプリケーション終了→次回起動時までデータの保持 |
|
Androidプログラミング日記 (仮)
