Kunwar Shekhar Singh
Kunwar Shekhar Singh

Reputation: 243

replacing fragment with another fragment with OnClick on a Listview

public class Fragment_01 extends ListFragment {

String string[]={"Contact 1","Contact 2","Contact 3","Contact 4","Contact 5"};



    public View onCreateView(LayoutInflater inflater, ViewGroup container ,Bundle saveInstanceState) {

        View myview = inflater.inflate(R.layout.fragment_fragment_01, container, false);
        ListView listView= (ListView) myview.findViewById(android.R.id.list);
        ArrayAdapter<String> array = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,string);
        listView.setAdapter(array);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            Fragment_03 f3 = new Fragment_03();
            ft.replace(R.id.linearLayout2, f3);
            ft.commit();




           }

        });
        return myview;
    }


        }

Upvotes: 0

Views: 179

Answers (3)

Payal Sorathiya
Payal Sorathiya

Reputation: 244

 Fragment_03 f3 = new Fragment_03();
 FragmentManager fragmentManager = ((FragmentActivity) getContext()).getSupportFragmentManager();
 fragmentManager.beginTransaction()
   .replace(R.id.content_frame, new Fragment_03())
   .commit();

Upvotes: 1

Kunwar Shekhar Singh
Kunwar Shekhar Singh

Reputation: 243

//I am using this code without listView and this is working fine then why the other is not working ??

public class Fragment_01 extends Fragment {



   public View onCreateView(LayoutInflater inflater, ViewGroup container ,Bundle saveInstanceState){

    View myview=inflater.inflate(R.layout.activity_fragment_01,container,false);
       Button btn = (Button) myview.findViewById(R.id.button);
       btn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {


               FragmentManager fm =getFragmentManager();
               FragmentTransaction ft =fm.beginTransaction();
               Fragment_03 f3 = new Fragment_03();
               ft.replace(R.id.linearLayout2,f3);
               ft.commit();
           }
       });
    return myview;

}

}

Upvotes: 0

Sahana Prabhakar
Sahana Prabhakar

Reputation: 581

Do not change a fragment inside another. Have a frame layout n the activity. On click of an item in the list view, send the event to the activity through an interface and in the activity replace the fragment. This is the right way of replacing fragments.

Upvotes: 1

Related Questions