2016-05-03 11 views
0

SharingPreferencesを使用して、activityからlistFragmentにデータを渡そうとしています。 アクティビティには2つのtextFieldと「保存」ボタンしか含まれていません。ボタンを押すと、フィールドのすべての情報がSharedPreferencesに送られます。 listFragmentには、テキストと同じSharedPreferencesのキーを使用するアダプタが割り当てられています。 ありがとうございました! 結果のリスト: [奇妙情報] [1] [1]:http://i.stack.imgur.com/TjGhU.jpgAndroid SharedPreferencesがファイルから間違ったデータを読み取る

断片Javaコード

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




} 

のTextViewオブジェクトとドン」上のレイアウトのJavaコード

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

あなたの質問や問題は何ですか? –

+0

'TextView'を' getText() 'で呼び出す必要があります。例: 'headline.getText()。toString()' –

+0

headline.getText()。toString ..他のTextViewと同じことをします。 –

答えて

0

利用のgetText設定キーの代わりに変数を使用すると、最終変数にする必要があります。

SharedPreferences.Editor ed = prefs.edit(); 
     ed.putString(<PUT A FINAL KEY HERE>,note_string.toString()); 
     ed.commit(); 
関連する問題