본문 바로가기

android

[j android] 버튼 누르면 fragment 나타내기

728x90
반응형

액티비티 하나에 버튼을 누르면 해당 프레그먼트를 나타내도록 구현해봅시다.

 

1) 이전 포스팅에서 프레그먼트 구현을 하나만 했지만 복사해서 똑같이 세 개를 만들어 주겠습니다. 

그러면 프레그먼트 3개와 액티비티1개의 자바파일이 생성이 되어 있어야 합니다. 각각의 프레그먼트는 각자 구현이 가능합니다. 

 

 

2) 메인 액티비티에 각각의 프레그먼트를 나타나게 해주는 버튼 3개를 추가 

 

버튼 3개 추가

 

3) 메인액티비티에 각각의 버튼 리스너를 구현 

 

 

버튼 리스너를 구현하는 방법에는 여러가지가 있는데 두가지 방법으로 구현하겠습니다.

 

  • 첫 번째 방법
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openfragment(firstFragment);
            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openfragment(secondFragment);
            }
        });

        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openfragment(thirdFragment);
            }
        });
        
         public  void openfragment(Fragment fragment){ //프레그먼트를 나타나게 해줌
       getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, fragment).commit();
    }

 

 

  • 두 번째 방법

 

Button.OnClickListener onClickListener = new Button.OnClickListener(){

            @Override
            public void onClick(View v) {
                switch (v.getId()){
                    case R.id.button :
                        openfragment(firstFragment);
                        break;
                    case R.id.button2 :
                        openfragment(secondFragment);
                        break;
                    case R.id.button3 :
                        openfragment(thirdFragment);
                        break;
                }
            }
        };

        button.setOnClickListener(onClickListener);
        button2.setOnClickListener(onClickListener);
        button3.setOnClickListener(onClickListener);
        
         public  void openfragment(Fragment fragment){ //프레그먼트를 나타나게 해줌
       getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, fragment).commit();
    }

 

 

728x90
반응형