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);
}
}
あなたの質問や問題は何ですか? –
'TextView'を' getText() 'で呼び出す必要があります。例: 'headline.getText()。toString()' –
headline.getText()。toString ..他のTextViewと同じことをします。 –