프래그먼트 기능을 넣기 위해
/app/java/com.study.todolist(패키지명)에 MainFragment
클래스를 생성하고 Fragment
를 상속합니다.
< 작성자도 공부중 >
향 후 오류가 났을 때나 디버깅할 때 상황을 알기 위해 TAG를 써주고
private static final String TAG = "MainFragment";
아래 코드도 추가해줍니다.
import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.fragment.app.Fragment; public class MainFragment extends Fragment { private static final String TAG = "MainFragment"; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_main, container, false); initUI(rootView); return rootView; } private void initUI(ViewGroup rootView) { } }
onCreateView
메서드는 프래그먼트가 화면 생성이 아닌 구성할 때, 즉 생성된 이후에 호출되는 역할을 합니다.
이 상황을 인플레이션
이라고 합니다
initUI()
메서드는 layoutManager와 어댑터를 이용하여 리사이클러뷰를 사용하는 역할을 할 것입니다.
이것은 어댑터를 만든 후에 다시 작성하겠습닌다.
다 작성하였으면 지금부터 MainActivity.java에 프래그먼트의 객체를 정의하고 몇 가지를 작성해봅시다.
MainActivity.java에도 태그
private static final String TAG = "MainActivity";
작성해줍니다.
그리고 onCreate()
안에서 Fragment객체를 사용하기 위해 onCreate()
메서드 밖에서 Fragment 변수를 선언합니다.
Fragment mainFragment;
그 후 onCreate()
메서드 안에서 fragment를 객체로 할당 후 FragmentManager의 getSupportFragmentManager()
메서드를 이용하여 이전에 만들었던 FrameLayout에 fragment_main.xml 이 추가되도록 설정합니다.
mainFragment = new MainFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.container, mainFragment).commit();
이왕 프래그먼트하는 김에 메인 화면의 saveButton도 클릭 이벤트 설정을 해줍시다.
Button btnAdd = findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(new View.onClickListener() {
@Override
public void onClick(View view) {
saveToDo();
Toast.makeText(getApplicationContext(), " 추가되었습니다.", Toast.LENGTH_SHORT).show();
}
private void saveToDo() {
}
}
btnAdd
을 누르면 EditText
에 입력한 글들이 저장되고 추가되었다고 메시지가 나와야합니다.
Toast.makeText
를 이용해 메시지를 나오게하고 saveToDo()
메서드를 이용해 저장합니다.
이 메서드는 데이터베이스를 만든 뒤 더 작성하고 일단 onCreate
메서드 밖에 saveToDo
메서드를 정의해 놓읍시다.