一、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);
}
}