Android 之路35---Fragment
导读
1.Fragment的介绍
2.Fragment的生命周期
3.Fragment的加载
4.Fragment的删除与替换
5.Fragment的隐藏与显示
6.Fragment间的信息传递
Fragment的介绍
Fragment是Android 3.0之后提出的一个UI控件,它实际上是将layout分成更小的设计单位,同样有生命周期
有了Fragment就可以将平板的布局运用于手机,而不用再单独写一个
Fragment的生命周期
Fragment的加载
在xml文件的静态加载方法
Fragment布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#bebebe"><TextView
android:layout_width="100dp"android:layout_height="100dp"android:text="Fragment"/></LinearLayout>
Fragment的java文件
package com.hala.view01;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;/*** Created by air on 2018/1/28.* xml静态加载Fragment的步骤:* 1。创建Fragment的java文件,要继承Fragment,同时要重写onCreateView方法* 2。设置Fragment的布局文件* 3。在要显示Fragment的布局文件(activity_main2.xml)中,编写fragment项,并绑定2中的Fragment布局文件*/public class Fragment_test extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {/*第一个参数:Fragment要加载的布局文件第二个参数:参数列表中的container,是加载页面的容器第三个参数:是否加载布局文件的根视图*/return inflater.inflate(R.layout.layout,container,false);}
}
第一页面的布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.hala.view01.MainActivity"><Button
android:id="@+id/bt1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="8dp"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="8dp"android:text="Fragment基本使用"android:onClick="click"/></android.support.constraint.ConstraintLayout>
第一页面的java文件
package com.hala.view01;import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.icu.util.Calendar;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){startActivity(new Intent(MainActivity.this,Main2Activity.class));}}
第二页面的布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.hala.view01.Main2Activity"android:id="@+id/main2_layout"><TextView
android:id="@+id/bt2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="在xml文件中直接使用Fragment"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="8dp"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="8dp"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent" /><!--此处有两点需要注意1.fragment内要有tool项指定设定好的Fragmrnt布局文件2.外层布局中要有这一行 android:id="@+id/main2_layout"--><fragment xmlns:tools="@layout/layout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:name="com.hala.view01.Fragment_test"tools:layout_editor_absoluteY="0dp"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"android:layout_marginBottom="8dp"app:layout_constraintBottom_toTopOf="@+id/bt2"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="8dp"></fragment></android.support.constraint.ConstraintLayout>
第二页面的java文件
package com.hala.view01;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class Main2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}}
显示结果
动态加载的方法
其他文件不变
页面二布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.hala.view01.Main2Activity"><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Add"android:onClick="click"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="8dp"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="8dp" /><!--这里不太一样,最终加载的Fragment会出现在默认位置--><FrameLayout
android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/fl_fragment"></FrameLayout></android.support.constraint.ConstraintLayout>
页面二java文件
package com.hala.view01;import android.content.Intent;
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;public class Main2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}public void click(View v){//这里的处理方式类似于数据库对事务的处理方式,注意要选择v4包里的FragmentManager fm=getSupportFragmentManager();FragmentTransaction ft=fm.beginTransaction();//这就是创建的Fragment的java文件那个类Fragment_test ft1=new Fragment_test();//第一个参数:main2Activity布局文件中Fragment的id//第二个参数:创建的Fragment类,而这个类又加载了Fragment布局文件ft.add(R.id.fl_fragment,ft1);//这一步是提交事务步骤ft.commit();}}
显示结果
Fragment的删除与替换
其他文件不变
新增Fragment布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#ff0000"><TextView
android:layout_width="100dp"android:layout_height="100dp"android:text="Fragment" /></LinearLayout>
新增Fragment的java文件
package com.hala.view01;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;/*** Created by air on 2018/1/28.*/public class Fragment_test1 extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {return inflater.inflate(R.layout.layout1,container,false);}}
页面二布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.hala.view01.Main2Activity"><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Add"android:onClick="click"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="8dp"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="8dp"android:id="@+id/button" /><FrameLayout
android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/fl_fragment"></FrameLayout><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Delete"android:onClick="delete"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"android:layout_marginTop="8dp"app:layout_constraintTop_toBottomOf="@+id/button"android:id="@+id/button2" /><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="replace"android:text="replace"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"android:layout_marginTop="0dp"app:layout_constraintTop_toBottomOf="@+id/button2" /></android.support.constraint.ConstraintLayout>
页面二java文件
package com.hala.view01;import android.content.Intent;
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;public class Main2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}public void click(View v){//这里的处理方式类似于数据库对事务的处理方式,注意要选择v4包里的FragmentManager fm=getSupportFragmentManager();FragmentTransaction ft=fm.beginTransaction();//这就是创建的Fragment的java文件那个类Fragment_test ft1=new Fragment_test();//第一个参数:main2Activity布局文件中FragmentLayout的id//第二个参数:创建的Fragment类,而这个类又加载了Fragment布局文件//第三个参数:tag 用来标记是哪个fragment,以便后边的删除操作ft.add(R.id.fl_fragment,ft1,"del");//这一步是提交事务步骤ft.commit();}public void delete(View v){FragmentManager supportFragmentManager = getSupportFragmentManager();FragmentTransaction ft= supportFragmentManager.beginTransaction();//这里可以根据id也可以根据tag来确定删除的对象ft.remove(supportFragmentManager.findFragmentByTag("del"));ft.commit();}public void replace(View v){FragmentManager fm=getSupportFragmentManager();FragmentTransaction ft=fm.beginTransaction();Fragment_test1 ft2=new Fragment_test1();//这里的第一个参数是要替换的Fragment或Activity的id//第二个参数是上边实例化的Fragment//第三个参数是tagft.replace(R.id.fl_fragment, ft2,"del");ft.commit();}
}
显示结果
添加操作
替换操作
删除操作
Fragment的隐藏与显示
hide与show的作用是优化界面,使得Fragment切换时不在重新构建
页面二布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.hala.view01.Main2Activity"><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Add"android:onClick="click"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="8dp"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="8dp"android:id="@+id/button" /><FrameLayout
android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/fl_fragment"></FrameLayout><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="hide"android:onClick="hide"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"android:layout_marginTop="8dp"app:layout_constraintTop_toBottomOf="@+id/button"android:id="@+id/button2" /><Button
android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="show"android:text="show"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"android:layout_marginTop="0dp"app:layout_constraintTop_toBottomOf="@+id/button2" /></android.support.constraint.ConstraintLayout>
页面二java文件
package com.hala.view01;import android.content.Intent;
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;public class Main2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}public void click(View v){//这里的处理方式类似于数据库对事务的处理方式,注意要选择v4包里的FragmentManager fm=getSupportFragmentManager();FragmentTransaction ft=fm.beginTransaction();//这就是创建的Fragment的java文件那个类Fragment_test ft1=new Fragment_test();//第一个参数:main2Activity布局文件中FragmentLayout的id//第二个参数:创建的Fragment类,而这个类又加载了Fragment布局文件//第三个参数:tag 用来标记是哪个fragment,以便后边的删除操作ft.add(R.id.fl_fragment,ft1,"del");//这一步是提交事务步骤ft.commit();}//hide和show只是让Fragment隐藏或显示,并没有删除,没有改变其数据public void hide(View v){FragmentManager supportFragmentManager = getSupportFragmentManager();FragmentTransaction ft= supportFragmentManager.beginTransaction();//这里可以根据id也可以根据tag来确定删除的对象ft.hide(supportFragmentManager.findFragmentByTag("del"));ft.commit();}public void show(View v){FragmentManager supportFragmentManager = getSupportFragmentManager();FragmentTransaction ft= supportFragmentManager.beginTransaction();//这里可以根据id也可以根据tag来确定删除的对象ft.show(supportFragmentManager.findFragmentByTag("del"));ft.commit();}
}
Fragment间的信息传递
页面一的按钮触发页面二,页面二的Fragment加载了第一个Fragment,第一个Fragment的按钮可以将信息传到第二个Fragment上,并替换为第二个Fragment
第一个页面布局文件 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.hala.view01.MainActivity"><Button
android:id="@+id/bt1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="8dp"app:layout_constraintRight_toRightOf="parent"android:layout_marginLeft="8dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="8dp"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="8dp"android:text="Fragment数据传递"android:onClick="click"/></android.support.constraint.ConstraintLayout>
第一个页面java文件 MainActivity.java
package com.hala.view01;import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.icu.util.Calendar;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){startActivity(new Intent(MainActivity.this,Main2Activity.class));}}
第二个页面布局文件 activity_main2.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.hala.view01.Main2Activity"><FrameLayout
android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/fl_fragment"></FrameLayout></android.support.constraint.ConstraintLayout>
第二个页面java文件 Main2Activity.java
package com.hala.view01;import android.content.Intent;
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;public class Main2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);//简写方式 将第一个Fragment加载到第二页面上来getSupportFragmentManager().beginTransaction().add(R.id.fl_fragment,new Fragment_test()).commit();}}
第一个Fragment布局文件 layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"android:id="@+id/layout"><EditText
android:id="@+id/et"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入"/><Button
android:id="@+id/bt1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="传递"android:onClick="send"/></LinearLayout>
第一个Fragment的java文件 Fragment_test.java
package com.hala.view01;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;public class Fragment_test extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View v= inflater.inflate(R.layout.layout,container,false);final EditText et=(EditText) v.findViewById(R.id.et);Button bt=(Button)v.findViewById(R.id.bt1);bt.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Fragment_test1 ft=new Fragment_test1();//这里借助bundle传值与activity是一样的Bundle bd=new Bundle();bd.putString("key",et.getText().toString());ft.setArguments(bd);getFragmentManager().beginTransaction().replace(R.id.fl_fragment,ft,"test1").commit();}});return v;}}
第二个Fragment的布局文件 layout1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#ff0000"><TextView
android:id="@+id/tv"android:layout_width="100dp"android:layout_height="100dp"android:text="Fragment" /></LinearLayout>
第二个Fragment的java文件 Fragment_test1
package com.hala.view01;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;/*** Created by air on 2018/1/28.*/public class Fragment_test1 extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View v= inflater.inflate(R.layout.layout1,container,false);TextView tv=(TextView)v.findViewById(R.id.tv);tv.setText(getArguments().getString("key"));return v;}}
显示结果
Android 之路35---Fragment相关推荐
- Android 点将台:撒豆成兵[- Fragment -]
个人所有文章整理在此篇,将陆续更新收录:知无涯,行者之路莫言终(我的编程之路) Fragment(碎片) 拥有生命周期,含有视图,可视可交互的界面 . 本文源码可见此处 1.Fragment和Acti ...
- android 动态生成fragment,Android动态加载fragment(fragment复用)
[实例简介] Android动态加载fragment(fragment复用) [实例截图] [核心代码] fm_reuse └── fm_reuse ├── AndroidManifest.xml ├ ...
- 【Android开发】之Fragment与Acitvity通信
上一篇我们讲到与Fragment有关的常用函数,既然Fragment被称为是"小Activity",现在我们来讲一下Fragment如何与Acitivity通信.如果上一篇还有不懂 ...
- Android攻城狮fragment
1 //1,fragment静态加载:MainActivity MainActivty1_2 Myfragment1 2 //2,fragment动态加载 :MainActivity Myfragme ...
- Android 之路30---UI基础控件
导读 1.TextView 2.Button 3.Android各种控件的监听器 4.EditText 5.ImageView及ImageButton 6.Android 中Xml文件引用资源的方法 ...
- Android Tab大总结 Fragment+TabPageIndicator+ViewPager
2019独角兽企业重金招聘Python工程师标准>>> 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24740 ...
- [Android] 使用Include布局+Fragment滑动切换屏幕
前面的文章已经讲述了"随手拍"项目图像处理的技术部分,该篇文章主要是主界面的布局及屏幕滑动切换,并结合鸿洋大神的视频和郭神的第一行代码(强推两人Android博客),完成了 ...
- android onattach方法,Java Fragment.onAttach方法代码示例
import android.support.v4.app.Fragment; //导入方法依赖的package包/类 private void testBindToLifecycle(Lifecyc ...
- android fragmentactivity fragment,Android:Activity与Fragment通信(99%)完美解决方案
前言 最近一直在想着能否有一种更好的方案来解决:Android中Activity与Fragment之间通信的问题,什么叫更好呢,就是能让Fragment的复用性高,性能还有好(不用反射),代码还要好维 ...
- android中viewpager+fragment,Android开发之ViewPager+Fragment
使用步骤 1.Activity的布局文件 android:id="@+id/viewpager" android:layout_width="wrap_content&q ...
最新文章
- 研读pytorch版本的BERT分类代码
- 最短路问题的原始对偶算法形式
- Java反射机制及API使用
- Event and Delegate
- 【离散数学中的数据结构与算法】十一 错排问题
- ext get id js_【翻译】Ext JS最新技巧——2015-8-11
- 微课--Python生成器函数定义与使用(19分钟)
- 什么样的人不适合互联网创业
- 最小环(【CCF】NOI Online能力测试 提高组第三题)
- (亲测有效).net framework 在计算机上已安装了更高的 4.x 版本,则无法安装以前的 4.5 版本。
- python语言实验——某年某月的天数 OJ1160
- 安全体系建设-基础安全
- STM32 HAL库函数学习 UART篇
- flacs 安装教程_002.Nginx安装及启动
- Git分支的作用与使用
- Android - Broadcast
- web自定义相机拍照
- Django和Flask区别
- Shader 学习笔记:杂记
- COSCon'19 女性参与开源论坛 ---女性,让开源社区更浪漫!
热门文章
- 江西省高考计算机试题及答案,2016年江西省信息技术高考真题(附答案) - 图文...
- AlertPay网银
- e签宝再获巨额融资,电子签赛道百亿规模后能冲多远?
- 怎样与项目中的“怪人”沟通
- zookeeper 企业面试真题
- 如何针对数据中心进行安全疏散和消防应急管理
- 磁共振线圈分类_核磁线圈的基本架构及各部分主要功能
- c语言 输入1-7之间的一个整数,然后根据输入的数字判断是星期几,最后输出对应的星期的全称。如输入3,则输出Wednesday。
- Scala基础教程--10--数组列表与函数式编程
- 做生产智能供料系统公司排名