>source

저는 YouTube 자습서에 따라 응용 프로그램을 작성합니다. 이 코드는 recyclerViewAdapter의 일부입니다.

       vHolder.item_contact.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TextView dialog_name_tv = (TextView) myDialog.findViewById(R.id.dialog_name_id);
            TextView dialog_phone_tv = (TextView) myDialog.findViewById(R.id.dialog_phone_id);
            ImageView dialog_contact_img = (ImageView) myDialog.findViewById(R.id.dialog_img);
            TextView dialog_detail_tv = (TextView) myDialog.findViewById(R.id.dialog_detail);
            dialog_name_tv.setText(mData.get(vHolder.getAdapterPosition()).getName());
            dialog_phone_tv.setText(mData.get(vHolder.getAdapterPosition()).getPhone());
            dialog_contact_img.setImageResource(mData.get(vHolder.getAdapterPosition()).getPhoto());
            dialog_detail_tv.setText(mData.get(vHolder.getAdapterPosition()).getDetail());
            Toast.makeText(mContext, "Test Click" + String.valueOf(vHolder.getAdapterPosition()), Toast.LENGTH_SHORT).show();
            myDialog.show();
            Button dialog_add_tv = (Button) myDialog.findViewById(R.id.dialog_add);
            dialog_add_tv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    EditText dialog_quantity_tv = (EditText) myDialog.findViewById(R.id.dialog_quantity);
                    quantity = dialog_quantity_tv.getText().toString();
                    name = mData.get(vHolder.getAdapterPosition()).getName()+"\n";
                    price = mData.get(vHolder.getAdapterPosition()).getPhone();
                    Intent i = new 
                    Intent(getActivity(),FragmentFav.class);
                    Bundle bundle = new Bundle();
                    bundle.putString("choices",choices);
                    bundle.putDouble("price",price);
                    i.putExtras(bundle);
                    startActivity(i);

                }
            });
        }
    });

    return vHolder;
}

Dialog_add_tv 버튼을 클릭하여 fragment.class에 데이터를 전달하고 싶습니다

public class FragmentFav extends Fragment {
View v;
public FragmentFav() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.call_fragment, container, false);
    return v;
}

}

의도를 사용하여 여러 번 시도하지만 여전히 오류가 발생합니다.


  • 답변 # 1

    인 텐트를 사용하면 프래그먼트를 열 수 없으며 오픈 프래그먼트에 아래 코드를 사용하고 데이터를 프래그먼트에 전달합니다

    // define a framelayout in activity xml
      <FrameLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/fragment_container"></FrameLayout>
     // then write below code on the click of dialog_add_tv button
     Bundle bundle = new Bundle();
     bundle.putString("choices",choices);
     bundle.putDouble("price",price);
     FragmentFav frgFav=new  FragmentFav();
     frgFav.setArguments(bundle);
     FragmentTransaction fragmentTrasaction=getFragmentManager().beginTransaction();
     fragmentTrasaction.add(R.id.fragment_container,frgFav,"frg");
     fragmentTrasaction.commit();
    
    // then get data in fragment like this
     String choice=getArguments().getString("choices");
     String price=getArguments().getString("price");
    
    

  • 답변 # 2

    다음은 필요한 것을 따라 구현할 수있는 단계입니다

    1 단계 : 어댑터와 프래그먼트 간 인터페이스 만들기

    2 단계 : 다음과 같이 어댑터에서 인터페이스를 구현하십시오.

    vHolder.item_contact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
           mProfileItemClickListener.itemContact(v);
     }
    
    

    // aka 인터페이스를 통해 전체보기를 전달

    3 단계 : 인터페이스에서 클래스가이 메소드를 추가

    void itemContact(View mView);
    
    

    4 단계 : Fragment에서 인터페이스 구현 :

    재정의 방법을 얻고 작업을 수행 할 위치

    @ 재정의     공공 무효 항목 문의 (ImageView mProfileImageView) {     여기 코드     }

    뷰간에 데이터를 전달하는 동안 콜백을 올바르게 처리 할 수 ​​있습니다.

관련 자료

  • 이전 npm - Webpack에서 커피 로더를 사용하여 Vue 템플릿을 만들 수 있습니까?
  • 다음 python - 이 QuerySet을 튜플로 구문 분석 할 때 비효율적 인 원인은 무엇입니까?