我有一个应用程序包含一些用于滑动目的的片段。在其中一个片段上,用户可以输入他们的名字,输入后,应用程序将使用FileOutputStream保存他们的数据。
然后,每次用户启动应用程序时,我都想使用FileInputStream来获取数据并显示数据。
问题是,我认为将FileInputStream实现到公共View onCreateView()中是错误的,因为我在每次尝试运行它时我的应用程序崩溃我将代码实现到公共View onCreateView(),那里&#39 ;没有错误,在事件日志中没有显示任何内容,它只是崩溃。下面是我的片段,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以使其正常工作?谢谢!
答案 0 :(得分:0)
您可以保存首选项
,而不是使用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,在您的代码中,您在主线程中进行后台操作受限制