-1

i'm new in android developing I'm trying to pass data from Activity to Fragment this data i get from Another Activity

Activity

public class BettingPage extends AppCompatActivity {

    public CardView matchCard;
    ImageView gamebanner;
//    TabLayout tabLayout;
//    ViewPager2 pager2;
//    bettingpage_tabviewer adapter;
    private RecyclerView recyclerView;
    private FirebaseDatabase firebaseDatabase;
    private DatabaseReference databaseReference;
    private MatchAdapter matchAdapter;
    private ArrayList<MatchModel> gList;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_betting_page);


        String gameid = getIntent().getStringExtra(GAME_ID);
        String banner = getIntent().getStringExtra(BANNER);

//        Bundle bundle = new Bundle();
//        bundle.putString("gameid",gameid);
//        // set Fragmentclass Arguments
//        matchtab fragmentclass = new matchtab();
//        fragmentclass.setArguments(bundle);

        firebaseDatabase = FirebaseDatabase.getInstance();
        databaseReference = firebaseDatabase.getReference("Match").child(gameid);

        gamebanner = findViewById(R.id.gamebanner);
//        tabLayout = findViewById(R.id.bettingtabs);
//        pager2 = findViewById(R.id.bettingpagetab);

//        getIncomingint();

//        matchCard = findViewById(R.id.matchdetail);
        recyclerView = findViewById(R.id.recyclerview);
        gList = new ArrayList<>();

        Glide.with(this).load(banner).into(gamebanner);
//
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                    MatchModel model = dataSnapshot.getValue(MatchModel.class);
                    gList.add( new MatchModel(model.title,model.amt));

                    Log.i("THE_CURRENT_USER:::", model.toString());
                }
                LinearLayoutManager im = new LinearLayoutManager((BettingPage.this));
                recyclerView.setLayoutManager(im);
                matchAdapter = new MatchAdapter(BettingPage.this,gList);
                recyclerView.setAdapter(matchAdapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });

I want to Pass that String gameid which i get from another activity to fragment "-------------------------------------------------------------------------------------------------------"

Fragment

public class matchtab extends Fragment {

    
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // Redirect to Bet Confirm page
    
    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;
    

    RecyclerView matachrecyclerview;

    private MyAdapter adapter;
    private ArrayList<Model> gList;

    
    public matchtab() {
        // Required empty public constructor
    }


    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment matchtab.
     */
    // TODO: Rename and change types and number of parameters
    public static matchtab newInstance(String param1, String param2) {

        matchtab fragment = new matchtab();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
//        Bundle b = getArguments();
//        String gameid = b.getString("gameid");


//        textView.setText(gameid);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View v = inflater.inflate(R.layout.fragment_matchtab, container, false);


//        String gameid = this.getArguments().getString("gameid");

        // Recycler View
        matachrecyclerview = v.findViewById(R.id.matchrecyclerview);

        gList = new ArrayList<>();
         FirebaseDatabase db = FirebaseDatabase.getInstance();
//        DatabaseReference root = db.getReference("Match").child(gameid);
        DatabaseReference root = db.getReference("Match").child("game1");
        root.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                    Model model = dataSnapshot.getValue(Model.class);
                    gList.add( new Model(model.title,model.amt));

                    Log.i("THE_CURRENT_USER:::", model.toString());
                }
                LinearLayoutManager im = new LinearLayoutManager((getContext()));
                matachrecyclerview.setLayoutManager(im);
                adapter = new MyAdapter(getContext(),gList);
                matachrecyclerview.setAdapter(adapter);
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });
        return v;}
        
}

Tell me how to send and how to Receive Data from Activity to Fragment

Phoenix
  • 1
  • 3
  • 2
    Does this answer your question? [Send data from activity to fragment in Android](https://stackoverflow.com/questions/12739909/send-data-from-activity-to-fragment-in-android) – Nikhil Jain May 06 '21 at 17:21

1 Answers1

0

Update your newInstance method and make it to

  public static matchtab newInstance(String gameId) {
        matchtab fragment = new matchtab();
        Bundle args = new Bundle();
        args.putString("gameId", gameId);
        fragment.setArguments(args);
        return fragment;
    }

Then update your onCreate to

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getArguments() != null) {
        gameId = getArguments().getString("gameId");
    }

}

Now when you want to create a new matchtab Fragment in your BettingPage don't use new like this new matchtab() but use like this matchtab.newInstance(gameId)

This will do the trick. Let me know if you need anything else.

DinkarKumar
  • 1,492
  • 8
  • 19