浅析回退栈

    xiaoxiao2022-07-14  149

    一、Fragment回退栈

    Activity切换时,相信大家都知道是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回退栈,它是直接销毁再重建,但如果将Fragment任务添加到回退栈,情况就会不一样了,它就有了类似Activity的栈管理方式。

    二、代码:

    主类代码:

    package com.example.day13_new; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.RelativeLayout; public class Activity_newday13 extends AppCompatActivity { Button jump; Button dia; FragmentManager manager; FrameLayout r1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_newday13); jump = findViewById(R.id.jump); r1 = findViewById(R.id.r1); dia = findViewById(R.id.dialog); jump.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { jumpTo(); } }); dia.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialogShow(); } }); } public void jumpTo(){ manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(R.id.r1,new SecondFragment()); transaction.addToBackStack("fragment1");//添加到栈中 transaction.commit();//事件提交 } public void dialogShow(){ SecondFragment_2 fragment2 = new SecondFragment_2(); fragment2.show(getSupportFragmentManager(),"sss"); } }

    定义的Fragment的代码:

    package com.example.day13_new; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; public class SecondFragment extends ListFragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.jump_one,container,false); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(getActivity(),R.layout.support_simple_spinner_dropdown_item,new String[]{"北京","天津","上海"})); } @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); } }
    最新回复(0)