Фрагмент перекрывает друг друга ... и предыдущий фрагмент щелкает - PullRequest
0 голосов
/ 04 марта 2019

Я создал приложение, в котором у меня было 1 ACTIVITY и 8 Fragment , в котором я раздувал каждый фрагмент в активность.но моя проблема в том, что каждый фрагмент перекрывает друг друга .Я изменяю цвет фона каждого фрагмента, но когда я нажимаю кнопку «Свободные места» моего предыдущего фрагмента, нажимается

. Пожалуйста, предложите мне кое-что из этой ситуации.

Main_Activity.класс

public class ActRegistration extends AppCompatActivity {
    FragmentManager fm;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_registration);
        fm = getSupportFragmentManager();
        loadFragment(new FragmentRegLogSkip(), FragmentRegLogSkip.FRAGMENT_KEY);
    }


    public void loadFragment(Fragment fragmentName, String fragmentKey) {
        FragmentTransaction fragmentTransaction = fm.beginTransaction();
        fragmentTransaction.add(R.id.id_registration_layout_frame, fragmentName);
        fragmentTransaction.addToBackStack(fragmentKey);
        fragmentTransaction.commit();
    }
}   

Frag_1.class

public class FragmentRegLogSkip extends Fragment implements View.OnClickListener {
    private Activity activity;
    private Context context;
    public static final String FRAGMENT_KEY = "fragment_reg_log_skip";


    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        context = getContext();
        LanguageChanger.changeLanguage(context);
        View view = inflater.inflate(R.layout.act_registration_screen_login, container, false);
return view;
}
}

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Внутри родительского тега вашего второго фрагмента макета добавьте следующее: -

android:clickable="true"
android:focusable="true"

, тогда при нажатии на любое представление он не будет щелкать по предыдущему фрагменту.

0 голосов
/ 04 марта 2019

Вы используете fragmentTransaction.add(), который не удалит предыдущий фрагмент - используйте fragmentTransaction.replace(), если вы хотите удалить вид другого фрагмента.

Примечание FragmentManager автоматически восстанавливает все ранее добавленныеФрагменты, когда ваша активность воссоздается (то есть, когда savedInstanceState != null).Таким образом, вы захотите убедиться, что добавляете свой первоначальный фрагмент только один раз - когда savedInstanceState равно нулю.

if (savedInstanceState == null) {
    loadFragment(new FragmentRegLogSkip(), FragmentRegLogSkip.FRAGMENT_KEY);
}
0 голосов
/ 04 марта 2019

Не забудьте добавить android:clickable="true" и android:focusable="true" к родительскому представлению вашего второго фрагмента, чтобы он ловил щелчки, и они не распространялись на фрагмент ниже.Как то так:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true">   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...