package com.example.writeandread;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
//import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
private EditText edit;
private TextView txtShow;
// private Button btn1, btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// btn1 = (Button)findViewById(R.id.button);
// btn2 = (Button)findViewById(R.id.button2);
edit = (EditText)findViewById(R.id.editText);
txtShow = (TextView)findViewById(R.id.textView);
}
public void read (View view){
try {
FileInputStream fileInput = openFileInput("example.txt");
InputStreamReader reader = new InputStreamReader(fileInput);
BufferedReader buffer = new BufferedReader(reader);
StringBuffer strBuffer = new StringBuffer();
String lines;
while ((lines = buffer.readLine()) != null){
strBuffer.append(lines + "\n");
}
txtShow.setText(strBuffer.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void write (View view){
String myTxt = edit.getText().toString();
try {
FileOutputStream fileOutput = openFileOutput("example.txt", MODE_PRIVATE);
fileOutput.write(myTxt.getBytes());
fileOutput.close();
edit.setText("");
Toast.makeText(MainActivity.this, "Текст сохранен", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Смотрю видеоурок на тему считывания и записи введеного текста в файл на устройство (https://www.youtube.com/watch?v=l3DR9PjyIYw&list=PL0lO_mIqDDFW13-lP3IgK9lZoM1M-oPl4&index=15&t=0s).
Так вот вопрос, почему добавленные мною кнопки в режиме "дизайн" в AndroidStudio РАБОТАЮТ без подключения соответствующей библиотеки - "Button"(я ее закомментировал) и к тому же без подключения функции прослушивания нажатий кнопок setOnClickListener?
Вы должны понимать что ничего не может работать без реализации, если кнопка визуально работает, это не означает что она выполняет ожидаемые функции: написали текст, нажали записать, удалили текст, нажали прочитать, работает? А так и должно быть, ибо у вас есть реализация кнопок: public void write (View view){} и второй метод public void read (View view){}, заккоментируйте их или переименуйте и вы получите ошибку компиляции так как у вас в коде вьюшки кнопки указан параметр android:onClick="read" (это не правильное именование предпочтительнее писать: onClickRead), который описывает реализацию. В Java как мне помнится нужно было ещё писать @Override, но это не точно. Почему вам не нужно указывать ИД кнопки? За вас это делает сама активити которая при прорисовке экрана находит вьюшку с данным атрибутом, сопоставляет его с таким же методом в коде (этот метод обязательно должен принимать View) и всё. Это дин из методов обработки нажатий советую к изучению.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей