Android MVC View инициализация дает java.lang.RuntimeException
Я пытаюсь простой MVC на Android.
Проблема в том, что когда я вхожу, это работает. Но когда я инициализирую textview, это дает мне java.lang.RuntimeException
как ниже
java.lang.RuntimeException: невозможно запустить действие ComponentInfo{com.example.cct.designpatternsdemo/com.example.cct.designpatternsdemo.MainActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод void android.widget.TextView.setText(java.lang.CharSequence)'для ссылки на пустой объект
Ошибка с этими двумя строчками
tvName.setText(studentName);
tvRoll.setText(studentRollNo);
Но я уже инициализировал вид. Я не мог понять, что я сделал не так.
Ниже мой МОДЕЛЬ-ВИД-КОНТРОЛЛЕР
модель
public class Student {
private static final String TAG = "Student";
private String rollNo;
private String name;
public String getRollNo() {
return rollNo;
}
public void setRollNo(String rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
View => MainActivity
public class MainActivity extends AppCompatActivity {
private String TAG = "MVCLog";
private StudentController controller;
private TextView tvName,tvRoll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvName = findViewById(R.id.tvName);
tvRoll = findViewById(R.id.tvRoll);
Student model = retriveStudetnFromDatabase();
MainActivity view = new MainActivity();
controller = new StudentController(model,view);
controller.updateView();
}
private Student retriveStudetnFromDatabase() {
Student student = new Student();
student.setName("Robert");
student.setRollNo("10");
return student;
}
public void printStudentDetails(String studentName, String studentRollNo){
tvName.setText(studentName); // NullPointerException
tvRoll.setText(studentRollNo); // NullPointerException
Log.d(TAG, "printStudentDetails: "+"Name: " + studentName);
Log.d(TAG, "printStudentDetails: "+"Roll No: " + studentRollNo);
}
public void btnUpdateUI(View view) {
// update model data
controller.setStudentName("Rusho");
controller.setStudentRoll("12");
controller.updateView();
}
}
контроллер
public class StudentController {
private String TAG = "MVCLog";
private Student model;
private MainActivity view;
public StudentController(Student model, MainActivity view) {
this.model = model;
this.view = view;
}
public void setStudentName(String name){
model.setName(name);
}
public String getStudentName(){
return model.getName();
}
public void setStudentRoll(String roll){
model.setRollNo(roll);
}
public String getStudentRoll(){
return model.getRollNo();
}
public void updateView(){
Log.d(TAG, "updateView: Controller");
view.printStudentDetails(model.getName(),model.getRollNo());
}
}