[안드로이드 JAVA] Fragment에서 Activity 새로운창 띄우는 방법

조회수 904회

안드로이드 자바에서 Fragment에서 새로운 activity 창을 열고 싶은데 버튼을 누르면 앱이 오류와 동시에 종료가 됩니다..

f0Binding.ibBk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(getContext(), Bk.class)); } }

ibBk이라는 버튼을 누르면 새로운 창이 뜨게 하고 싶은데 방법이 있을까요??

package com.example.up;

import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment;

import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button;

import com.example.up.databinding.ActivityFrag0Binding; import com.example.up.databinding.ActivityMainBinding;

public class Frag0 extends Fragment {

private ActivityFrag0Binding f0Binding; // 프래그먼트 바인딩
private View view;
private ActivityMainBinding mainBinding; // 메인
private Frag0 frag0;
private Frag1 frag1;
private Frag2 frag2;
private Button ib_bk;



@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //프래그먼트는 onCreateView로 시작한다 #25 14:16
    f0Binding = ActivityFrag0Binding.inflate(inflater,container,false);
    view = inflater.inflate(R.layout.activity_frag0,container,false);


    f0Binding.ibBk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getContext(), Bk.class));


          Intent intent = new Intent(getActivity(), bk.class);
            startActivity(intent);


        }

    });

    return view;
}

}

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

1 답변

  • fragment 에서 layout inflate 를 두번 하는것같습니다.

    f0Binding = ActivityFrag0Binding.inflate(inflater,container,false);
    //view = inflater.inflate(R.layout.activity_frag0,container,false);
    
    return f0Binding.getRoot();
    

    ibBk 버튼이 데이터바인딩에서 인플레이트된것과 view 변수에 직접 인플레이터를 사용해서 인플레이트된것 2개 생성되었는데 onCreateView 메서드에서 view 를 return 하셨지만 거기에는 findById 로 지정된것이 없기때문에 에러가 나는것같습니다.

    다음번에는 에러 메세지도 같이 첨부해주세요.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)