2016-05-03 8 views
0

Ich versuche, Daten von Aktivität zu listFragment mit SharingPreferences zu übergeben. Aktivität enthält nur zwei textFields und "Speichern" -Taste, nach dem Drücken der Taste alle Informationen aus den Feldern geht zu SharedPreferences. In listFragment haben Adapter zugewiesen, die Schlüssel aus denselben SharedPreferences als Text verwenden. Danke für die Hilfe! Ergebnisliste: [seltsame info] [1] [1]: http://i.stack.imgur.com/TjGhU.jpgAndroid SharedPreferences liest falsche Daten aus der Datei

Fragment Java-Code

public class fragment_main extends ListFragment { 

    private ArrayAdapter<String> adapter; 

    private ArrayList<String> tags; 

    private final String NOTES_FILE = "notes"; 

    private SharedPreferences prefs; 

    private static final String TAG = "Fragment"; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     View fragView = inflater.inflate(R.layout.fragment_main,container,false); 


    prefs = this.getActivity().getSharedPreferences(NOTES_FILE,Context.MODE_APPEND); 
     tags = new ArrayList<String>(prefs.getAll().keySet()); 

     adapter = new ArrayAdapter<String>(this.getActivity(),R.layout.list_notes,tags); 
     setListAdapter(adapter); 





     return fragView; 
    } 




} 

Layout Java-Code

public class new_note extends AppCompatActivity 
{ 
    private TextView headline; 
    private TextView note_string; 
    private final String NOTES_FILE = "notes"; 
    private static SharedPreferences prefs ; 
    private static final String TAG = "new_note"; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.new_note_layout); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_new_note); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 


    headline = (TextView)findViewById(R.id.descriptionPlainText); 
     note_string = (TextView)findViewById(R.id.ContentPlainText); 
      prefs= getSharedPreferences(NOTES_FILE,MODE_APPEND); 

    } 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_add, menu); 
     return true; 
    } 


    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     headline = (TextView)findViewById(R.id.descriptionPlainText); 
     note_string = (TextView)findViewById(R.id.ContentPlainText); 


     if(headline.length()>0&& note_string.length()>0) 
     { 
      SharedPreferences.Editor ed = prefs.edit(); 
      ed.putString(headline.toString(),note_string.toString()); 
      ed.commit(); 


      Toast yolotoast = Toast.makeText(new_note.this,this.getString(R.string.saved), Toast.LENGTH_SHORT); 
      yolotoast.show(); 

     }else 
     { 

      Toast yolotoast = Toast.makeText(new_note.this,this.getString(R.string.Empty_text),Toast.LENGTH_SHORT); 
      yolotoast.show(); 
     } 


     return super.onOptionsItemSelected(item); 
    } 


} 
+0

Was genau ist Ihre Frage oder Problem? –

+0

Sie müssen 'getText()' auf dem 'TextView's zuerst aufrufen, wenn Sie ihre Werte speichern. ZB "headline.getText(). ToString()". –

+0

headline.getText(). ToString .. mach das gleiche für die andere TextView .. –

Antwort

0

Verwenden getText auf Textview-Objekt und don‘ t Variable anstelle des Präferenzschlüssels verwenden Es sollte eine endgültige Variable sein

SharedPreferences.Editor ed = prefs.edit(); 
     ed.putString(<PUT A FINAL KEY HERE>,note_string.toString()); 
     ed.commit(); 
Verwandte Themen