[안드로이드 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 로 지정된것이 없기때문에 에러가 나는것같습니다.
다음번에는 에러 메세지도 같이 첨부해주세요.
댓글 입력