2016-12-08 22 views
0

私はスワイプの目的のためにいくつかの断片を含むアプリケーションを持っています。そしてフラグメントの1つで、ユーザーは名前を入力することができ、入力後、アプリケーションはFileOutputStreamでデータを保存します。Androidスタジオ - アプリを初めて起動したときにデータをアプリに読み込む方法

次に、ユーザーがアプリを起動するたびに、FileInputStreamを使用してデータを取得し、データを表示したいと考えています。

問題は、私はパブリックビューonCreateView(にコードを実装した後、それを実行しようとする私のアプリのクラッシュ毎回ので、私は、)私は、パブリックビューonCreateView(へのFileInputStreamを実現するために間違っていると思う、である)、エラーは、ありませんイベントログには何も表示されず、クラッシュするだけです。以下は、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を使用しての、あなたはFileInputStreamをを使用してファイルに保存したい場合は、AsyncTaskを使用する必要が

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; 
} 

のように好み

をして

答えて

0

保存することができ、あなたのコードでは、バックグラウンド操作を行っていますメインスレッドで制限されています

+0

返信ありがとうございます!できるだけ早くそれを試してみよう! –

関連する問題