【问题标题】:Android Studio - How to load data into the app when the app first launch?Android Studio - 如何在应用首次启动时将数据加载到应用中?
【发布时间】:2016-12-08 09:02:13
【问题描述】:

我有一个应用程序,其中包含一些用于滑动目的的片段。在其中一个片段上,用户可以输入他们的名字,输入之后,应用程序将使用 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 才能让它工作?谢谢!

【问题讨论】:

    标签: java android-studio fragment


    【解决方案1】:

    您可以保存在首选项中,而不是使用 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,在你的代码中你在主线程中进行后台操作,这是受限制的

    【讨论】:

    • 感谢您的回复!会尽快试用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2021-06-06
    • 2022-11-05
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多