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

}

0 ответов

Другие вопросы по тегам