안드로이드 bottom navigation view 에서 fragment 사용법

조회수 4769회

안드로이드 스튜디오에서 bottom navigation view를 이용해 앱을 만들려고합니다. 메인 엑티비티는 다음과 같고 탭에따라서 fragmen에서 버튼을 만들거나 여러가지를 하고싶은데 자꾸 오류가 뜨네요

public class MainActivity extends AppCompatActivity {

    private Fragment fragment;
    private FragmentManager fragmentManager;


    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_recentcall:

                    break;
                case R.id.navigation_contact:

                    break;
                case R.id.navigation_keypad:
                    fragment = new KeypadFragment();
                    break;
            }
            final FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.content, fragment).commit();
            return true;
        }

    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragmentManager = getSupportFragmentManager();
        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
    }

}

한 예로 keypadfragment부분을 이런식으로 작성했는데

public class KeypadFragment extends Fragment {
    String input_num="";
    Button btnCall,btnAdd,btnErase;
    Button[] numbutons =new Button[12];
    TextView number;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
        View view=inflater.inflate(R.layout.fragment_keypad,null);
        btnCall = (Button) findViewById(R.id.button_call);
        btnAdd = (Button) findViewById(R.id.button_add);
        btnErase = (Button) findViewById(R.id.button_erase);
        number = (TextView) findViewById(R.id.textView_input_number);
        return view;
    }
}    

이부분에서 오류가 나더라고요

btnCall = (Button) findViewById(R.id.button_call);

findViewById가 안먹히는데 왜그런가요 물론 다른 위젯에 대한 findViewById도 안먹혀여ㅛ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • onCreateView에서 view를 선언했으니 view.findViewById식으로 하니 되더군요!!

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)