簡體   English   中英

如何僅對一個片段進行回壓操作而不是從backStack彈出,而對於其他片段仍然應該能夠正常工作?

[英]How to do something on back press instead of pop from backStack just for one fragment and still should able to work normally for other fragments?

我有一個應用程序,其中有一個FramLayout ID為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的新手,並且仍然在學習,因此提供的幫助非常棒。

只需使用onBackPressed函數即可從“ 活動”內的返回鍵捕獲偵聽器

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

要么

如果您在片段中,請使用此

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

試試吧:

@Override
public void onBackPressed() {
    int count = getFragmentManager().getBackStackEntryCount();
    if (count == 0) {
        super.onBackPressed();
    } else getFragmentManager().popBackStack();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM