안드로이드 Fragment관련 질문드립니다.
조회수 1149회
public class MovieDetailFragment extends Fragment {
TextView likeCountView;
TextView hateCountView;
Button allViewButton;
ViewGroup rootView;
boolean likeState = false;
boolean hateState = false;
ArrayList<CommentItems> items;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.movie_detail_fragment, container, false);
ListView listView = rootView.findViewById(R.id.listView);
items = new ArrayList<CommentItems>();
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
listViewAdapter adapter = new listViewAdapter(items);
listView.setAdapter(adapter);
TextView writeButton = rootView.findViewById(R.id.button_write);
allViewButton = rootView.findViewById(R.id.button_allView);
//모두보기 버튼
allViewButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity) getActivity()).commentWriteViewReplace();
}
}
}
});
//작성하기 버튼
writeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity) getActivity()).commentWriteViewReplace();
}
});
return rootView;
}
public class listViewAdapter extends BaseAdapter {
final ArrayList<CommentItems> items;
public listViewAdapter(ArrayList<CommentItems> items) {
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
final Context context = parent.getContext();
// "listview_item" Layout을 inflate하여 convertView 참조 획득.
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.comment_item, parent, false);
}
// 화면에 표시될 View(Layout이 inflate된)으로부터 위젯에 대한 참조 획득
TextView id = convertView.findViewById(R.id.textview_id);
RatingBar ratingBar = convertView.findViewById(R.id.ratingBar);
ImageView proFileImage = convertView.findViewById(R.id.imageView_proFile);
TextView commentText = convertView.findViewById(R.id.textview_commenttext);
// Data Set(listViewItemList)에서 position에 위치한 데이터 참조 획득
CommentItems item = items.get(position);
// 아이템 내 각 위젯에 데이터 반영
id.setText(item.getId());
ratingBar.setRating(item.getRating());
proFileImage.setImageResource(item.getResId());
commentText.setText(item.getComment());
return convertView;
}
}
============================================================================
public void allCommentViewReplace() {
getSupportFragmentManager().beginTransaction().replace(R.id.container, allCommentView).addToBackStack(null).commit();
}
public void commentWriteViewReplace() {
getSupportFragmentManager().beginTransaction().replace(R.id.container, commentWriteView).addToBackStack(null).commit();
}
============================================================================ Fragment에서 저런식으로 버튼을 눌러 다른 Fragment로 전환하고자 Button을 클릭하면
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
이런 오류가 나오네요... 어디에서 잘못된 걸까요 ㅠㅠ?
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력