1>写一个文件保存和读取的应用程序。和javaEE一样MVC的设计模式,在android里M应该是Service层,那么Service层和view层应该可以并行开发。因为程序比较简单,我就先写view了。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/fileNameLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/fileNameLabel"
/>
<EditText
android:id="@+id/fileNameEdit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/fileTxtLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/fileTxtLabel"
/>
<EditText
android:id="@+id/fileTxtEdit"
android:layout_width="fill_parent"
android:minLines="3"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/fileSaveBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/fileSaveBtn"
/>
</LinearLayout>
2>然后是Service层。
package com.duantl.service;
import java.io.FileOutputStream;
import android.content.Context;
public class FileService {
private Context context;
public FileService(Context context) {
this.context = context;
}
/**
* 以私有模式输出文件内容
* @param fileName
* @param content
* @throws Exception
*/
public void save(String fileName, String content) throws Exception {
FileOutputStream outStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
outStream.write(content.getBytes());
outStream.close();
}
}
3>再写控制层之前,先用JUnit进行测试。
package com.duantl.file;
import android.test.AndroidTestCase;
import com.duantl.service.FileService;
public class FileServiceTest extends AndroidTestCase {
public void saveTest() throws Exception {
FileService fileService = new FileService(this.getContext());
fileService.save("www.txt", "wangguan");
}
}
当然别忘记了改AndroidManifest.xml,添加JUnit配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.duantl"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="android.test.runner" />
<activity android:name="file.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.duantl" android:label="Tests for My App" />
</manifest>
4>测试成功,那么好,就开始控制层。
package com.duantl.file;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.duantl.service.FileService;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private EditText fileNameEdit = null;
private EditText fileTxtEdit = null;
private Button fileSaveBtn = null;
private FileService fileService;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
fileNameEdit = (EditText)this.findViewById(R.id.fileNameEdit);
fileTxtEdit = (EditText)this.findViewById(R.id.fileTxtEdit);
fileSaveBtn = (Button)this.findViewById(R.id.fileSaveBtn);
fileSaveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String fileNameStr = fileNameEdit.getText().toString();
String fileTxtStr = fileTxtEdit.getText().toString();
fileService = new FileService(MainActivity.this);
try {
fileService.save(fileNameStr, fileTxtStr);
Toast.makeText(MainActivity.this, R.string.success, Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(MainActivity.this, R.string.error, Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});
}
}
写功能就写好了,,那么看看读取的功能。。。