2017-09-15 3 views
0

J'ai un bouton qui enregistre les changements, et mettre cela en mémoire interne, puis quand l'application démarre, je veux lire le fichier s'il y a unc. Je pensais que ce serait suffisant mais im codeur et ne sais pas qui est bon.Comment lire le fichier à partir du stockage interne lorsque l'application démarre android

Je ne sais pas où est erreur, et aussi ce qui est bon code, merci de me aider becous je coincé

Mon code:

MyGameDetailsFragment public class étend Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_my_game_details, container, false); 


    try { 
     FileInputStream is = getActivity().openFileInput(file); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line).append("\n"); 
     } 
     is.close(); 
    } catch(OutOfMemoryError om) { 
     om.printStackTrace(); 


    } catch(Exception ex) { 
     ex.printStackTrace(); 

    } 
    String result = sb.toString(); 
    saveBtn = (Button) view.findViewById(R.id.savechangesbtn); 
    saveBtn.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View view) { 
      Data1 = s1.getText().toString(); 
      Data2 = s2.getText().toString(); 
      Data3 = s3.getText().toString(); 
      Data4 = s4.getText().toString(); 
      Data5 = s5.getText().toString(); 
      Data6 = s6.getText().toString(); 


      try { 

       FileOutputStream fos=getActivity().openFileOutput(file, getActivity().MODE_PRIVATE); 
       ObjectOutputStream outputStream = new ObjectOutputStream(fos); 
       outputStream.write(Data1.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data2.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data3.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data4.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data5.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data6.getBytes()); 
       outputStream.close(); 

       //Toast.makeText(context,"file saved",Toast.LENGTH_SHORT).show(); 
      }catch (FileNotFoundException e){ 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 

      } 

      try { 
       FileInputStream inputStream = getActivity().openFileInput(file); 
       BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuilder total = new StringBuilder(); 
       String line; 

       while ((line = r.readLine()) != null) { 
        total.append(line); 
       } 
       r.close(); 
       inputStream.close(); 
       Log.d("File", "File contents: " + total); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 

     } 
    }); 

    return view; 

} }

Ps: s1, s2 etc. sont créés dans le code, etc.

Permission

<uses-permission android:name="android.hardware.camera" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 

Répondre

0

méthode d'abord tout ce que je vous suggère que, Dont code d'écriture dans OnCreateView() en fragments, écrire toujours le code dans la méthode OnViewCreated.

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_my_game_details, container, false); 
    return view; 
} 

public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     try { 
     FileInputStream is = getActivity().openFileInput(file); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line).append("\n"); 
     } 
     is.close(); 
    } catch(OutOfMemoryError om) { 
     om.printStackTrace(); 


    } catch(Exception ex) { 
     ex.printStackTrace(); 

    } 
    String result = sb.toString(); 
    saveBtn = (Button) view.findViewById(R.id.savechangesbtn); 
    saveBtn.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View view) { 
      Data1 = s1.getText().toString(); 
      Data2 = s2.getText().toString(); 
      Data3 = s3.getText().toString(); 
      Data4 = s4.getText().toString(); 
      Data5 = s5.getText().toString(); 
      Data6 = s6.getText().toString(); 


      try { 

       FileOutputStream fos=getActivity().openFileOutput(file, getActivity().MODE_PRIVATE); 
       ObjectOutputStream outputStream = new ObjectOutputStream(fos); 
       outputStream.write(Data1.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data2.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data3.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data4.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data5.getBytes()); 
       outputStream.write(newline.getBytes()); 
       outputStream.write(Data6.getBytes()); 
       outputStream.close(); 

       //Toast.makeText(context,"file saved",Toast.LENGTH_SHORT).show(); 
      }catch (FileNotFoundException e){ 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 

      } 

      try { 
       FileInputStream inputStream = getActivity().openFileInput(file); 
       BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuilder total = new StringBuilder(); 
       String line; 

       while ((line = r.readLine()) != null) { 
        total.append(line); 
       } 
       r.close(); 
       inputStream.close(); 
       Log.d("File", "File contents: " + total); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 

     } 
    }); 
} 

Si vous faites face à une erreur, veuillez écrire la pile-trace d'erreur.

Merci

+0

Je n'ai pas d'erreurs, j'ai des problèmes que ce texte dosent apparaissent avec le début de l'application, Maby après application fermer ce dossier est également supprimé? Seulement en consloe 9 au 15 juillet: 59: 24,604 1647-1661/system_process E/memtrack: Impossible de charger le module memtrack 9 au 15 juillet: 59: 24.604 1647-1661/system_process W/android.os. Débogage: impossible d'obtenir des informations de consommation de mémoire: -1 –

+0

Et aussi besoin de ligne avec vérifier que le fichier est en mémoire interne si ce n'est pas loda avec vue normale –

0
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    Other = (TextView) view.findViewById(R.id.Details); 
    OtherD = (TextView) view.findViewById(R.id.OtherDetails); 



    try { 
     FileInputStream is = getActivity().openFileInput(file); 
     byte[] input = new byte[is.available()]; 
     while(is.read(input) != -1){ 


      value += new String(input); 
     } 
     is.getFD().sync(); 
     //is.flush(); 
     is.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    String[] strArray = value.split(";"); 

    s1.setText(strArray[1]); 
    s2.setText(strArray[2]); 
    s3.setText(strArray[3]); 
    s4.setText(strArray[4]); 
    s5.setText(strArray[5]); 
    s6.setText(strArray[6]); 
    s7.setText(strArray[7]); 






    saveBtn = (Button) view.findViewById(R.id.savechangesbtn); 
    saveBtn.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View view) { 
      Data1 = s1.getText().toString(); 

      Data2 = s2.getText().toString(); 
      Data3 = s3.getText().toString(); 
      Data4 = s4.getText().toString(); 
      Data5 = s5.getText().toString(); 
      Data6 = s6.getText().toString(); 
      Data7= s7.getText().toString(); 


      try { 

       FileOutputStream fos=getActivity().openFileOutput(file, getActivity().MODE_PRIVATE); 
       ObjectOutputStream outputStream = new ObjectOutputStream(fos); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data1.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data2.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data3.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data4.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data5.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data6.getBytes()); 
       outputStream.write(string3.getBytes()); 
       outputStream.write(Data7.getBytes()); 
       outputStream.write(string3.getBytes()); 
       //outputStream.getFD().sync(); 
       outputStream.flush(); 
       outputStream.close(); 
       //Toast.makeText(context,"file saved",Toast.LENGTH_SHORT).show(); 
      }catch (FileNotFoundException e){ 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 

      } 

      try { 
       FileInputStream inputStream = getActivity().openFileInput(file); 
       BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuilder total = new StringBuilder(); 
       String line; 
       while ((line = r.readLine()) != null) { 
        total.append(line); 
       } 
       r.close(); 
       inputStream.close(); 
       Log.d("File", "File contents: " + total); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 

     } 
    }); 


} 

Résoudre sur mon propre