检索以前的输入Android

时间:2014-08-02 13:21:18

标签: android android-intent

我目前正在开展一个项目,要求我输入并存储用户的输入。有什么方法可以让我能够检索以前的记录而不是当前的记录吗?

代码

package com.example;

// imports

public class Testing extends Activity {
    String tag = "Testing";
    EditText amount;

    Uri rResult = null;

    int request_Code = 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testyourself);

        amount = (EditText) findViewById(R.id.etUserInput);

        Button saveButton = (Button) findViewById(R.id.btnSave);

        saveButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent("com.example.Result");

                Bundle extras = new Bundle();
                extras.putString("amount", amount.getText().toString());


                intent.putExtras(extras);

                startActivityForResult(intent, request_Code);
            }
        });
    }

    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }

    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        saveAsText(); // Step E.1
        Log.d(tag, "In the onPause() event");
    }

    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
    }


    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        retrieveText(); // Step E.1
        Log.d(tag, "In the onResume() event");
    }


    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
    }


    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
    }

    public void saveAsText() {
        String line = amount.getText().toString();

        if (rResult != null)
            line += "|" + rResult;

        FileWriter fw = null;
        BufferedWriter bw = null;
        PrintWriter pw = null;

        try {
            String path = Environment.getExternalStorageDirectory().getPath();

            fw = new FileWriter(path + "/exercise.txt");
            bw = new BufferedWriter(fw);
            pw = new PrintWriter(bw);
            pw.println(line);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (pw != null)
                    pw.close();
                if (bw != null)
                    bw.close();
                if (fw != null)
                    fw.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }// saveAsText

    public void retrieveText() {
        FileReader fr = null;
        BufferedReader br = null;
        try {
            String line;
            String path = Environment.getExternalStorageDirectory().getPath();
            fr = new FileReader(path + "/exercise.txt");
            br = new BufferedReader(fr);
            line = br.readLine();

            StringTokenizer st = new StringTokenizer(line, "|");

            pullup.setText(st.nextToken());
            bench.setText(st.nextToken());


            String rResult;
            if (st.hasMoreTokens())
                rResult = st.nextToken();
            else
                rResult = "";

            Log.d(tag, "readAsText: " + line);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)
                    br.close();
                if (fr != null)
                    fr.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

结果页面

public class Result extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.results);

        Bundle bundle = getIntent().getExtras();

        int amount = Integer.parseInt(bundle.getString("amount"));

        TextView ResultView = (TextView) findViewById(R.id.userInput);
        ResultView.setText(String.valueOf(amount));


    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用SharedPreferences而不是写入文件,它允许您存储信息,例如用户输入或统计信息,直到明确删除。即使您关闭应用并重新打开它,您使用SharedPreferences保存的信息仍将保留。

this question的选定答案是为SharedPreferences创建帮助程序类的一个很好的示例,它允许您轻松保存,检索和删除信息。

假设您要保存int值。

如果助手类中的保存和检索方法是:

public void saveAmount(String key, int amount) {
    _prefsEditor.putInt(key,amount);
    _prefsEditor.commit();
}
public int getAmount(String key) {
    return _sharedPrefs.getInt(key,0); //returns 0 if nothing is found
}

你有一个像这样的整数的ArrayList:

ArrayList<int> arrayList = new ArrayList<int>();
arrayList.add(123);
arrayList.add(231);
arrayList.add(312);   //These are just placeholder values.

然后你可以创建一个循环来保存:

private AppPreferences _appPrefs;
.
.
.
for(int i = 0; i < arrayList.size(); i++) {
    _appPrefs.saveAmount(i,arrayList.get(i));
}

请注意,在上面的方法中,元素的键只是数组中元素的索引。

为了检索信息并重新创建ArrayList,您还需要首先在共享首选项中保存ArrayList的长度。

public void saveLength(int length) {
   _prefsEditor.putInt("length", length);
   _prefsEditor.commit();
}
public int getLength() {
   return _sharedPrefs.getInt("length",0);
}

然后你可以创建一个循环来检索:

ArrayList<int> arrayList = new ArrayList<int>();
.
.
.
for(int i = 0; i < _appPrefs.getLength(); i++) {
    arrayList.add(getAmount("" + i));
}