如何保存我在Android Studio内部收集的数据?

时间:2014-12-12 16:07:23

标签: java android save

我正在为我的独立学习创建一个简单的笔记应用程序。问题是,只要退出应用程序,就会删除创建的注释,并完全重置应用程序。我已经阅读了几个偏好教程和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);

    }

这是不保存收集的字符串的代码。有人可以帮我弄清楚如何实现保存这些数据的方法之一,以便在销毁应用程序后检索它?

1 个答案:

答案 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();

当然,当您打开应用程序时,您必须阅读文件,以便设置之前保存的任何备注:

  1. 调用openFileInput()并将其传递给要读取的文件的名称。这将返回FileInputStream。
  2. 使用read()从文件中读取字节。
  3. 然后用close()关闭流。
  4. 您可能会发现此信息对将fileInputStream转换为字符串很有帮助: How to convert FileInputStream into string in java?