首页 > 解决方案 > 如何在背压上做一些事情,而不是从 backStack 中弹出一个片段,并且仍然应该能够为其他片段正常工作?

问题描述

我有一个应用程序,其中有一个FramLayoutid frame_container

我的 onCreate 看起来像这样:-

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

        hideKeyboard();
        editText = findViewById(R.id.editText4);
        editText.setSelection(editText.getText().toString().length());
        textView = findViewById(R.id.textView3);
        frameLayout = findViewById(R.id.frame_container);
        frameLayout.setVisibility(View.INVISIBLE);
        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.frame_container,new advancefunction());
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
        frameLayout.animate().translationXBy(1000f);


    }

当我按下一个按钮时,它只是通过使用功能为我的片段带来动画:-

@Override
    public void advanceButton(View view) {

        frameLayout.setVisibility(View.VISIBLE);
        frameLayout.animate().translationXBy(-1000f).setDuration(500);
    }

因此,当我按下 backButton 时,它会进入先前的状态,但我希望它能够获得invisible以及translationXby(1000f)如何实现它的任何建议,因为我是 android 的新手并且仍在学习,所以帮助会很大。

标签: javaandroidandroid-layoutandroid-studioandroid-fragments

解决方案


只需使用onBackPressed函数,它会从Activity中的后退键捕获侦听器

 @Override
    public void onBackPressed() {
       //put your code here
    }

或者

如果您在Fragment中,请使用这个

@Override
    public void onDetach() {
        super.onDetach();
        PUT YOUR CODE HERE
    }

推荐阅读