0

I'm using some fragments programmatically in activity. There is one button in my first fragment and when i click to this button, it replaces to second fragment.My second fragment's background is 90% transparent, and when it starts, i can see button which is situated in first fragment, and it also works. I want to stop or do something, because i dont want to see first fragment features and use it.

First Fragment

public class RegistrationFirstFragment extends Fragment {

RegistrationSecondFragment rf;

ImageButton btnNewUser,btnNewAgent;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    //return super.onCreateView(inflater, container, savedInstanceState);

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

    rf = new RegistrationSecondFragment();

    btnNewUser = (ImageButton)v.findViewById(R.id.btnNewUserRegistrationFirstFragment);
    btnNewAgent = (ImageButton)v.findViewById(R.id.btnNewAgentRegistrationFirstFragment);

    btnNewUser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "Transaction completed succesfully", Toast.LENGTH_LONG).show();

            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.replace(R.id.flRegistrationFirst, rf);

            ft.commit();



        }
    });

    return v;
}

}

Second Fragment

public class RegistrationSecondFragment extends Fragment {

RegistrationFirstFragment rtl;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    rtl = new RegistrationFirstFragment();
    //return super.onCreateView(inflater, container, savedInstanceState);

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

    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
   // ft.replace(R.id.flRegistrationFirst, rf);
    ft.remove(rtl);

    ft.commit();

    return v;

}

}

Main Activity

public class RegistrationActivity extends AppCompatActivity{

RegistrationFirstFragment fr;


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

    fr = new RegistrationFirstFragment();

    FragmentManager fm = getSupportFragmentManager();

    FragmentTransaction ft = fm.beginTransaction();

    ft.add(R.id.flRegistrationFragment,fr);

    ft.commit();

}

}

First Fragment

Second Fragment

JavadKhan
  • 625
  • 6
  • 18

3 Answers3

0

You can put

        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

(the parameter fragment would be an instance of your second fragment)

into your onClick(View view){...} method to change the fragment instead of adding it.

Next time code for understanding your problem btw ;)

Emdja
  • 64
  • 11
0

Add to fragment layout android:clickable="true". Int his way fragment will catch event so the click will not be caught by "main fragment".

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true" />
0

Give android:clickable="true" for Second Fragment root layout parent, when ever fragment opens It catches the click event of root and ignored previous click events.

Second One: If u use replace Fragment it's better than add fragment.

 getActivity().getSupportFragmentManager().beginTransaction().replace
        (R.id.YOUR_CONTAINER, 'FragmentObject').addToBackStack("TAG").commitAllowingStateLoss();
Ravi Jaggarapu
  • 627
  • 3
  • 10