本人刚接触android不久,将自己的学习心得和大家分享,如有错误请大家指出。
一、Fragment实现跳转之后,上一个Fragment的内容仍然出现
主布局文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" android:id="@+id/content"> <fragment android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/fr1" android:name="com.example.administrator.bhb.BlankFragment"/> </FrameLayout>
第一个Fragment,实现跳转到第二个Fragment:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_blank, container, false); view.findViewById(R.id.btnto2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.content,new BlankFragment2()).commit(); } }); return view; }
结果:跳转之后,第一个布局的内容仍然出现。
个人理解:由于第一次就和activity绑定,所以跳转的时候不会被销毁
二、代码更改
方法:不实现绑定,指定Fragment替换主布局内容,使用代码的方式实现,可实现Fragment之间跳转。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BlankFragment bf=new BlankFragment(); getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.content, bf).commit(); }