[英]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.