Я создаю проект в студии Android. Моя цель: когда я нажимаю кнопку «загрузить», я хочу, чтобы данные в строках edittextName + edittextPhone вызывали ранее сохраненные данные и отправляли их обратно после закрытия и повторного открытия приложения.
Когда я пытаюсь запустить свой проект, я получаю сообщение об ошибке «найден массив, требуется строка»
Я считаю, что все, что мне нужно сделать, это заменить [] на команду get(), но я не знаю, какой синтаксис использовать правильно.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_favourite);
editTextName = (EditText) findViewById(R.id.nameText);
editTextPhone = (EditText) findViewById(R.id.phoneText);
file = new File(this.getFilesDir(), FILE_NAME);
}
public void save(View v) {
String data = editTextName.getText().toString() + "|" + editTextPhone.getText().toString();
try {
outputStream = new FileOutputStream(file);
outputStream.write(data.getBytes());
outputStream.close();
Toast.makeText(this, "Your Barcrawl has been saved!", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
}
}
public void load(View v) {
int length = (int) file.length();
byte[] bytes = new byte[length];
try {
inputStream = new FileInputStream(file);
inputStream.read(bytes);
inputStream.close();
String data = new String(bytes);
editTextName.setText(data.split("\\|"[0])); // << problem
editTextPhone.setText(data.split("\\|"[1])); // << problem
Toast.makeText(getBaseContext(), "data loaded", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
Я новичок в студии Android и какое-то время застрял на этом, пожалуйста, помогите.




data.split("\\|") возвращает String[], вы можете изменить его на это:
editTextName.setText(data.split("\\|")[0]);
editTextPhone.setText(data.split("\\|")[1]);
Спасибо, исправил, легенда!
Вы намеревались сделать это:
editTextName.setText(data.split("\\|")[0])?String#splitвозвращает массив строк. Затем вы можете получить доступ к элементу в этом массиве.