我正在为我的独立学习创建一个简单的笔记应用程序。问题是,只要退出应用程序,就会删除创建的注释,并完全重置应用程序。我已经阅读了几个偏好教程和saveoninstance方法,但无论我尝试实现它们的方式有多少,我似乎无法弄明白。
public class Home extends Activity {
//Declaration of variables
private Button mNoteButton;
private String mText;
private ListView myList;
private int index;
public static final String TAG = Note.class.getSimpleName();
ArrayList<String> myArrayList= new ArrayList<String>();
ArrayAdapter<String> myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
//Setting the list item to blank
if (mText == null) {
mText = "";
}
Log.d(TAG, mText);
//creating adapter to insert myListArray into the ListView
myAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myArrayList);
//Setting the adapter to myArrayList
myList= (ListView) findViewById(R.id.noteList);
myList.setAdapter(myAdapter);
//Creating and setting the new note button
mNoteButton = (Button)findViewById(R.id.newNoteButton);
//When button is clicked
mNoteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
newNote();
}
});
//When an item in the list is clicked
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Taking the data in the item selected and sending it to the EditNote.java
index = position;
//Selecting item data
String old = myArrayList.get(index);
Intent intent = new Intent(Home.this, EditNote.class);
intent.putExtra("note_text", old);
startActivityForResult(intent, 1);
}
});
}
private void newNote()
{
//Starts and sends data to Note.java and creates a new note
Intent intent = new Intent(this, Note.class);
startActivityForResult(intent, 0);
}
protected void onActivityResult(int requestCode, int resultCode, Intent DATA) {
super.onActivityResult(requestCode, resultCode, DATA);
//Data from the Note activity is received
if (requestCode == 1 && resultCode == RESULT_OK)
{
//Gets data and saves it to myListArray as new edit
Bundle save = DATA.getExtras();
String extra = save.getString("note");
myArrayList.set(index, extra);
myList.setAdapter(myAdapter);
}
if (requestCode == 0 && resultCode == RESULT_OK) {
//Gets data and saves it to myListArray as new note
Bundle pack = DATA.getExtras();
String pageText = pack.getString("note");
myArrayList.add(pageText);
myList.setAdapter(myAdapter);
}
这是不保存收集的字符串的代码。有人可以帮我弄清楚如何实现保存这些数据的方法之一,以便在销毁应用程序后检索它?
答案 0 :(得分:0)
一种选择是将字符串作为文件写入内部存储:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
String FILENAME = "yourFileName";
String extra = save.getString("note");
FileOutputStream fileOutputStream = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fileOutputStream.write(extra.getBytes());
fileOutputStream.close();
当然,当您打开应用程序时,您必须阅读文件,以便设置之前保存的任何备注:
您可能会发现此信息对将fileInputStream转换为字符串很有帮助: How to convert FileInputStream into string in java?