android 最好的学习教材还是官网上的training。
今天学了Saving data 的前两部分。
网址如下:http://developer.android.com/training/basics/data-storage
src/MainActivity.java
package johnsonyue.training.sharedPreference;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btn1=null,btn2=null,btn3=null,btn4=null;
private EditText editText=null;
private TextView textView=null;
private SharedPreferences sharedPref=null;
private File file=null;
private FileOutputStream os=null;
private FileInputStream is=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPref=MainActivity.this.getPreferences(Context.MODE_PRIVATE);
btn1=(Button)findViewById(R.id.btn1);
btn2=(Button)findViewById(R.id.btn2);
btn3=(Button)findViewById(R.id.btn3);
btn4=(Button)findViewById(R.id.btn4);
editText=(EditText)findViewById(R.id.editText);
textView=(TextView)findViewById(R.id.textView);
file=new File(getFilesDir(),"temp");
//Usage of SharedPreference:
//1.Get
//private SharedPreferences sharedPref=null;
//sharedPref=MainActivity.this.getPreferences(Context.MODE_PRIVATE);
//2.Write
//SharedPreferences.Editor editor=sharedPref.edit();
//editor.putString("et1", editText.getText().toString());
//editor.commit();
//3.Read
//String tempt;
//tempt=sharedPref.getString("et1", "default");
btn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SharedPreferences.Editor editor=sharedPref.edit();
editor.putString("et1", editText.getText().toString());
editor.commit();
}});
btn2.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String temp;
temp=sharedPref.getString("et1", "default");
textView.setText(temp);
}});
//Usage of File.
//1.Get
//private File file=null;
//file=new File(getFilesDir(),"tempt");
//2.Write
//private FileOutputStream os=null;
//os = openFileOutput(file.getName(), Context.MODE_PRIVATE);
//os.write(editText.getText().toString().getBytes());
//os.close();
//PS: use try catch to handle exceptions.
//3.Read
//private FileInputStream is=null;
//is = openFileInput(file.getName());
//function is.read(); read one character from file which is similar to getChar(); in C.
btn3.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
os = openFileOutput(file.getName(), Context.MODE_PRIVATE);
os.write(editText.getText().toString().getBytes());
os.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(MainActivity.this, "Saved", Toast.LENGTH_LONG).show();
}});
btn4.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
char[] data = new char[40];
is = openFileInput(file.getName());
int n = is.read();
int i=0;
for(;n!=-1;i++){
data[i]=(char)n;
n=is.read();
}
textView.setText(data,0,i);
Toast.makeText(MainActivity.this, "Restored", Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
res/layout/activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:text="@string/btn1_text" />
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/btn1"
android:layout_centerHorizontal="true"
android:text="@string/btn2_text" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="56dp"
android:text="@string/hint"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn2"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:ems="10"
android:inputType="text" />
<Button
android:id="@+id/btn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:text="@string/btn3_text" />
<Button
android:id="@+id/btn4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/btn3"
android:text="@string/btn4_text" />
</RelativeLayout>