【序言】
1. 第一个是在布局的时候,文本框输入类型的定义
2.第二个 就是在线性布局的时候,内容的布局错误 。注意android:orientation中的"vertical"跟"horizontal"的区别
3 全局的变量给值 出现空指针 修改代码 加上FileService类的代码
4. SDcard 的写入跟权限设置 8月一号更新
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
代码:
package com.example.pro_filesave;
import com.example.service.FileService;
import android.R.string;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.support.v4.widget.SimpleCursorAdapter.ViewBinder;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText filenametext = null;
EditText contentText = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) this.findViewById(R.id.button_save); //找到按钮
filenametext = (EditText) this.findViewById(R.id.file_name);
contentText = (EditText) this.findViewById(R.id.file_content);
button.setOnClickListener(new ButtonClicklistener()); //对象
}
@SuppressLint("ShowToast")
private final class ButtonClicklistener implements View.OnClickListener{
@SuppressLint("ShowToast")
public void onClick(View v) {
String file_name = filenametext.getText().toString();
String file_content = contentText.getText().toString();
FileService service = new FileService(getApplicationContext());
try {
service.save(file_name,file_content);
Toast.makeText(getApplicationContext(), R.string.success, 1).show();
}
catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), R.string.fail, 1).show();
}
}
private EditText findViewById(int fileContent) {
// TODO Auto-generated method stub
return null;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
FileService的代码
package com.example.service;
import java.io.File;
import java.io.FileOutputStream;
import java.net.ContentHandler;
import com.example.pro_filesave.R.string;
import android.content.Context;
public class FileService {
private Context context;
public FileService(Context context) {
super();
this.context = context;
}
private void saveToSDcard(String file_name,String file_content)throws Exception{
File file=new File("",file_name); //保存的SD卡的系统路径跟名称 , 也可以换成getApplicationContext()
FileOutputStream outputStream=new FileOutputStream(file);
outputStream.write(file_content.getBytes());
outputStream.close();
}
/**
* 保存文件
* @param 文件名称
* @param 文件内容
* **/
public void save(String file_name, String file_content) throws Exception{
// TODO Auto-generated method stub
//私有模式创建文件,只能被该APP访问,写入的内容可能被覆盖原文件
FileOutputStream OutputStream=context.openFileOutput(file_name, Context.MODE_PRIVATE);
OutputStream.write(file_content.getBytes());
OutputStream.close();
}
}
写入SDcard的权限, 这些权限在于平时的积累
<!-- 往SDcard中创建跟删除的权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard中 写入数据的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>