Debug

Fragment 내부의 Button에 대해서는 onClick이 작동하지 않는다.

autocat 2020. 7. 11. 22:02

java에서 코드로 구현해주는 방식으로 사용해야 버튼 클릭이 작동한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class MainFragment extends Fragment implements MapView.CurrentLocationEventListener, View.OnClickListener {
    ...
    @Override
    public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                             Bundle savedInstanceState) {
        ...
        // Fragment에서는 onClick을 사용할 수 없기때문에,  별도로 리스너를 달아서 클릭이벤트를 지정한다.
        ImageButton btn = v.findViewById(R.id.btn);
        Button btn_in = v.findViewById(R.id.btn_in);
        Button btn_out = v.findViewById(R.id.btn_out);
        Button btn_exOut = v.findViewById(R.id.btn_exOut);
        btn.setOnClickListener(this);
        btn_in.setOnClickListener(this);
        btn_exOut.setOnClickListener(this);
        btn_out.setOnClickListener(this);
        ...
    }
    // 버튼 클릭 이벤트 리스너
    @Override
    public void onClick(View view) {
        switch (view.getId()){
            //출근버튼
            case R.id.btn_in: 
                //출근 관련 로직
                Toast.makeText(getContext(),"출근 완료",Toast.LENGTH_SHORT).show();
                break;
            //퇴근 버튼
            case R.id.btn_out: 
                //퇴근 관련 로직
                Toast.makeText(getContext(),"퇴근 완료",Toast.LENGTH_SHORT).show();
                break;
            //예외 퇴근 버튼
            case R.id.btn_exOut: 
                // 예외 퇴근 관련 로직
                Toast.makeText(getContext(),"예외 퇴근 완료",Toast.LENGTH_SHORT).show();
                break;
            // 우측 상단 현위치+범위표시 이미지버튼
            case R.id.btn: 
                mapView.setShowCurrentLocationMarker(true);
                mapView.setCurrentLocationRadius(100);
                mapView.setZoomLevel(1,true);
                break;
        }
    }
}
cs