关于android studio
什么是fragment?
Fragment也可以叫为“片段”,但我觉得“片段”中文叫法有点生硬,还是保持叫Fragment比较好,它可以表示Activity中的行为或用户界面部分。我们可以在一个Activity中用多个Fragment组合来构建多窗格的UI,以及在多个Activity中重复使用某个Fragment。它有自己的生命周期,能接受自己的输入,并且可以在 Activity 运行时添加或删除Fragment(有点像在不同 Activity 中重复使用的“子 Activity”)。
简单来说,Fragment其实可以理解为一个具有自己生命周期的控件,只不过这个控件又有点特殊,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于Activity,能互相通信和托管。
fragment能解决什么问题?
能解决在一个页面里的小界面的跳转
- 代码复用。特别适用于模块化的开发,因为一个Fragment可以被多个Activity嵌套,有个共同的业务模块就可以复用了,是模块化UI的良好组件。
- Activity用来管理Fragment。Fragment的生命周期是寄托到Activity中,Fragment可以被Attach添加和Detach释放。
- 可控性。Fragment可以像普通对象那样自由的创建和控制,传递参数更加容易和方便,也不用处理系统相关的事情,显示方式、替换、不管是整体还是部分,都可以做到相应的更改。
- Fragments是view controllers,它们包含可测试的,解耦的业务逻辑块,由于Fragments是构建在views之上的,而views很容易实现动画效果,因此Fragments在屏幕切换时具有更好的控制。
fragment静态代码
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.win.myapplication.fragement.BlankFragment;
import com.example.win.myapplication.fragement.BlankFragment2;
import com.example.win.myapplication.fragement.nanzhuangFragment;
import com.example.win.myapplication.fragement.nvzhuangFragment;
public class tianmaoActivity extends AppCompatActivity implements View.OnClickListener{
private Button nan;
private Button nv;
private nanzhuangFragment nanzhuang;
private nvzhuangFragment nvzhuang;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tianmao);
bindID();
}
private void bindID() {
nan=findViewById(R.id.nanzhuang_btn);
nv=findViewById(R.id.nvzhuang_btn);
nan.setOnClickListener(this);
nv.setOnClickListener(this);
}
@Override
public void onClick(View view) {
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
switch (view.getId()){
case R.id.nanzhuang_btn:
if (nanzhuang==null)
{
nanzhuang = new nanzhuangFragment();
}
transaction.replace(R.id.shop_content,nanzhuang);
break;
case R.id.nvzhuang_btn:
if (nvzhuang==null)
{
nvzhuang = new nvzhuangFragment();
}
transaction.replace(R.id.shop_content,nvzhuang);
break;
default:
break;
}
transaction.commit();
}}
fragment动态代码+viewpaper页面滑动
class:
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.win.myapplication.adapter.myadapter;
import com.example.win.myapplication.fragement.PengyouFragment;
import com.example.win.myapplication.fragement.PengyouquanFragment;
import com.example.win.myapplication.fragement.XiaoxiFragment;
import java.util.ArrayList;
import java.util.List;
public class weixinActivity extends AppCompatActivity implements View.OnClickListener{
private Button liangxiren;
private Button pengyouquan;
private Button xiaoxi;
private ViewPager viewPager;
private PengyouFragment pengyouFragment;
private PengyouquanFragment pengyouquanFragment;
private XiaoxiFragment xiaoxiFragment;
private List<Fragment> fragmentList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weixin);
bindID();
pengyouFragment= new PengyouFragment();
pengyouquanFragment= new PengyouquanFragment();
xiaoxiFragment= new XiaoxiFragment();
fragmentList.add(pengyouFragment);
fragmentList.add(pengyouquanFragment);
fragmentList.add(xiaoxiFragment);
myadapter adapter=new myadapter(getSupportFragmentManager(),fragmentList);
viewPager.setAdapter(adapter);
}
private void bindID() {
liangxiren=findViewById(R.id.lxr_btn);
pengyouquan=findViewById(R.id.pyq_btn);
xiaoxi=findViewById(R.id.xx_btn);
viewPager=findViewById(R.id.wx);
liangxiren.setOnClickListener(this);
pengyouquan.setOnClickListener(this);
xiaoxi.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.lxr_btn:
viewPager.setCurrentItem(0);
break;
case R.id.pyq_btn:
viewPager.setCurrentItem(1);
break;
case R.id.xx_btn:
viewPager.setCurrentItem(2);
break;
default:
break;
}
}
}
适配器adapter:
import android.app.FragmentManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
public class myadapter extends FragmentPagerAdapter{
public List<Fragment> mFragmentList;
public myadapter(android.support.v4.app.FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
this.mFragmentList=fragmentList;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
}
activity就不展示了。。