第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在片段中實(shí)現(xiàn)onBackPared()?

如何在片段中實(shí)現(xiàn)onBackPared()?

慕容3067478 2019-06-11 21:03:49
如何在片段中實(shí)現(xiàn)onBackPared()?我們有沒有辦法onBackPressed()在Android片段中,類似于我們?cè)贏ndroid活動(dòng)中實(shí)現(xiàn)的方式?因?yàn)槠紊芷跊]有onBackPressed()..有什么其他方法可以替代騎嗎?onBackPressed()在Android 3.0片段中?
查看完整描述

3 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

我用這種方式解決了onBackPressed在活動(dòng)中。所有FragmentTransactionaddToBackStack承諾前:

@Overridepublic void onBackPressed() {

    int count = getSupportFragmentManager().getBackStackEntryCount();

    if (count == 0) {
        super.onBackPressed();
        //additional code
    } else {
        getSupportFragmentManager().popBackStack();
    }}


查看完整回答
反對(duì) 回復(fù) 2019-06-11
?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為最好的解決辦法是

Java解決方案

創(chuàng)建簡(jiǎn)單的界面:

public interface IOnBackPressed {
    /**
     * If you return true the back press will not be taken into account, otherwise the activity will act naturally
     * @return true if your processing has priority if not false
     */
    boolean onBackPressed();}

在你的活動(dòng)中

public class MyActivity extends Activity {
    @Override public void onBackPressed() {
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
       if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) {
          super.onBackPressed();
       }
    } ...}

最后,在您的片段中:

public class MyFragment extends Fragment implements IOnBackPressed{
   @Override
   public boolean onBackPressed() {
       if (myCondition) {
            //action not popBackStack
            return true; 
        } else {
            return false;
        }
    }}

Kotlin解

1-創(chuàng)建接口

interface IOnBackPressed {
    fun onBackPressed(): Boolean}

2-準(zhǔn)備你的活動(dòng)

class MyActivity : AppCompatActivity() {
    override fun onBackPressed() {
        val fragment =
            this.supportFragmentManager.findFragmentById(R.id.main_container)
        (fragment as? IOnBackPressed)?.onBackPressed()?.not()?.let {
            super.onBackPressed()
        }
    }}

3-在目標(biāo)片段中實(shí)現(xiàn)

class MyFragment : Fragment(), IOnBackPressed {
    override fun onBackPressed(): Boolean {
        return if (myCondition) {
            //action not popBackStack
            true
        } else {
            false
        }
    }}


查看完整回答
反對(duì) 回復(fù) 2019-06-11
?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

根據(jù)@Hamed的回答,這里是偽碼,它應(yīng)該如何工作。讓我們說你的主要活動(dòng)叫做BaseActivity其中包含子片段(類似于SlidingMenulib示例)。以下是步驟:

首先,我們需要?jiǎng)?chuàng)建接口和類,它實(shí)現(xiàn)了它的接口,以具有泛型方法。

  1. 創(chuàng)建類接口OnBackPressedListener

    public interface OnBackPressedListener {
        public void doBack();}
  2. 創(chuàng)建實(shí)現(xiàn)以下技能的類:OnBackPressedListener

    public class BaseBackPressedListener implements OnBackPressedListener {
        private final FragmentActivity activity;
    
        public BaseBackPressedListener(FragmentActivity activity) {
            this.activity = activity;
        }
    
        @Override
        public void doBack() {
            activity.getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }}
  3. 從現(xiàn)在開始,我們將編寫我們的代碼。BaseActivity及其碎片

  4. 在類的頂部創(chuàng)建私有偵聽器BaseActivity

    protected OnBackPressedListener onBackPressedListener;
  5. 創(chuàng)建方法來設(shè)置偵聽器BaseActivity

    public void setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
        this.onBackPressedListener = onBackPressedListener;}
  6. 在覆蓋onBackPressed實(shí)現(xiàn)這樣的東西

    @Overridepublic void onBackPressed() {
        if (onBackPressedListener != null)
            onBackPressedListener.doBack();
        else
            super.onBackPressed();
  7. 在你的碎片里onCreateView您應(yīng)該添加我們的偵聽器

    @Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        activity = getActivity();
    
        ((BaseActivity)activity).setOnBackPressedListener(new BaseBackPressedListener(activity));
    
        View view = ... ;//stuff with view
    
        return view;}

現(xiàn)在,當(dāng)您單擊Back in片段時(shí),您應(yīng)該在Back方法上捕獲您的自定義。


查看完整回答
反對(duì) 回復(fù) 2019-06-11
  • 3 回答
  • 0 關(guān)注
  • 514 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)