簡體   English   中英

Android Fragment返回新聞

[英]Android Fragment Back press

我有幾個片段。 但是,當所有片段按下按鈕時,它們都將導致PeriodFragment。 我的問題是我應該如何實現,以便當用戶按下手機上的BACK按鈕時,PeriodFragment將切換回輸入該片段的位置。 這是PeriodFragment.java中的Java代碼:

public class PeriodFragment extends Fragment {

    Button btnPretrazi;

    public PeriodFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View view = inflater.inflate(R.layout.fragment_period, container, false);


        //buttonPretraziPeriod
        btnPretrazi = (Button) view.findViewById(R.id.buttonPretraziPeriod);

        btnPretrazi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(),"test", Toast.LENGTH_SHORT).show();
            }
        });


        return view;
    }

}

這是我的TvrdjavaFragment.java(具有按鈕以切換到PeriodFragment.java的片段之一):

package com.example.ivanp.msnis;

public class TvrdjavaFragment extends Fragment {

    Button btnIdinaperiod;

    public TvrdjavaFragment() {
        // Required empty public constructor
    }


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

        View view = inflater.inflate(R.layout.fragment_tvrdjava, container, false);
        // Inflate the layout for this fragment
        //show date
        TextView datumprikaz = (TextView) view.findViewById(R.id.datumprikaz);
        Date danas = new Date();

        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        String novDatum = sdf.format(danas);

        datumprikaz.setText(novDatum);
        //End of show date

        btnIdinaperiod = (Button) view.findViewById(R.id.buttonIdinaperiod);

        btnIdinaperiod.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PeriodFragment periodFragment = new PeriodFragment();
                FragmentTransaction periodFragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
                periodFragmentTransaction.replace(R.id.frame, periodFragment);
                periodFragmentTransaction.commit();
            }
        });

        return view;
    }

}

我是android studio的新手,所以請告訴細節。

根據android docs,當在您的應用中使用片段時,各個FragmentTransaction對象可能表示應添加到后台堆棧的上下文更改。 例如,如果要通過換出片段在手機上實現主/細節流程,則應確保在詳細信息屏幕上按“后退”按鈕可使用戶返回到主屏幕。 為此,請在提交事務之前調用addToBackStack():

// Works with either the framework FragmentManager or the
// support package FragmentManager (getSupportFragmentManager).
getSupportFragmentManager().beginTransaction()
                       .add(detailFragment, "detail")
                       // Add this transaction to the back stack
                       .addToBackStack()
                       .commit();

添加到backstack將解決問題:

periodFragmentTransaction.replace(R.id.frame, periodFragment);
periodFragmentTransaction.addToBackStack(null);
periodFragmentTransaction.commit();

暫無
暫無

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

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