簡體   English   中英

Android Studio-首次啟動應用程序時如何將數據加載到應用程序中?

[英]Android Studio - How to load data into the app when the app first launch?

我有一個包含某些片段的應用程序,用於刷卡。 並且在其中一個片段上,用戶可以輸入自己的名稱,然后輸入名稱,應用程序將使用FileOutputStream保存其數據。

然后,每次用戶啟動應用程序時,我都想使用FileInputStream來獲取數據並顯示數據。

問題是,我認為將FileInputStream實現到public View onCreateView()中是錯誤的,因為在將代碼實現到public View onCreateView()之后,每次嘗試運行它時,我的應用都會崩潰,沒有錯誤,沒有任何顯示在事件日志上,它只是崩潰。 下面是我的片段,java

package layout;


import ...;

public class page1 extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    final EditText text = (EditText) getView().findViewById(R.id.p1Name);
    try {
        FileInputStream fileinputStream = getActivity().openFileInput("page1name.txt");
        InputStreamReader inputstreamReader = new InputStreamReader(fileinputStream);
        BufferedReader bufferedReader = new BufferedReader(inputstreamReader);
        StringBuffer stringBuffer = new StringBuffer();
        String lines;
        while ((lines = bufferedReader.readLine())!= null){
            stringBuffer.append(lines+"\n");
        }
        text.setText(stringBuffer.toString());
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return inflater.inflate(R.layout.page1, container,
            false);


}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    final EditText text = (EditText) getView().findViewById(R.id.p1Name);


    text.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            String p1sName = s.toString();
            try {
                FileOutputStream fileoutputStream = getActivity().openFileOutput( "page1name.txt", Context.MODE_PRIVATE);
                fileoutputStream.write(p1sName.getBytes());
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    });
}

}

因此,我想知道,應該在哪里實現FileInputStream才能使其正常工作? 謝謝!

您可以保存首選項,而不是使用FileInputStream

喜歡

public static void saveName(Context context, String name) {
    SecureSharedPreferences sharedPreferences = new SecureSharedPreferences(context);
    SecureSharedPreferences.Editor ed = sharedPreferences.edit();
    ed.putString("name", name);
    ed.commit();
}

 public static String getName(Context context) {
    SecureSharedPreferences sharedPreferences = new SecureSharedPreferences(context);
    String name = sharedPreferences.getString("name", null);
    return name;
}

如果要使用FileInputStream保存在文件中,則需要使用AsyncTask,在代碼中,您需要在受限的主線程中執行后台操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM