Fragment和ViewPager
Fragment传值
Fragment向Activity传值(接口回调)
main代码
public class MainActivity extends AppCompatActivity implements BlankFragment.MyListener {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv =findViewById(R.id.tv);
}
@Override
public void sendMessage(String string) {
tv.setText(string);
}
}
Fragment代码
public class BlankFragment extends Fragment {
private Button btn;
private EditText et;
private MyListener myListener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
myListener= (MyListener) getActivity();
}
public BlankFragment() {
// Required empty public constructor
}
public interface MyListener{
void sendMessage(String string);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_blank, container, false);
btn =inflate.findViewById(R.id.btn);
et =inflate.findViewById(R.id.et);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = et.getText().toString();
if(s!=null){
myListener.sendMessage(s);
}
}
});
return inflate;
}
}
Fragment向Fragment传值(直接查找id)
Fragment代码
public class BlankFragment extends Fragment {
private Button btn;
private EditText et;
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflate = inflater.inflate(R.layout.fragment_blank, container, false);
btn = inflate.findViewById(R.id.btn);
et = inflate.findViewById(R.id.et);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = et.getText().toString();
TextView tv = getActivity().findViewById(R.id.tv);
tv.setText(s);
}
});
return inflate;
}
}
Fragment向Fragment传值(接口回调)
Fragment1代码
public class BlankFragment extends Fragment {
private Button btn;
private EditText et;
private MyListener myListener;
public BlankFragment() {
// Required empty public constructor
}
public interface MyListener{
void sendMessage(String s);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
myListener= (MyListener) getActivity().getSupportFragmentManager().findFragmentById(R.id.frag2);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflate = inflater.inflate(R.layout.fragment_blank, container, false);
btn = inflate.findViewById(R.id.btn);
et = inflate.findViewById(R.id.et);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = et.getText().toString();
myListener.sendMessage(s);
}
});
return inflate;
}
}
Fragment2代码
public class BlankFragment2 extends Fragment implements BlankFragment.MyListener {
private TextView tv;
public BlankFragment2() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflate = inflater.inflate(R.layout.fragment_blank_fragment2, container, false);
tv = inflate.findViewById(R.id.tv);
return inflate;
}
@Override
public void sendMessage(String s) {
tv.setText(s);
}
}
ViewPager
PagerAdapter适配器(自动翻页 )
main代码
public class MainActivity extends AppCompatActivity {
private ViewPager vp;
private MyAdapter adapter;
private List<String> lists=new ArrayList<String>();
private int index=0;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==100){
vp.setCurrentItem(index);
index++;
if(index==lists.size()){
index=0;
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp =findViewById(R.id.vp);
lists.add("龙");
lists.add("凤");
lists.add("虎");
lists.add("豹");
lists.add("猫");
adapter=new MyAdapter(lists,this);
vp.setAdapter(adapter);
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
Toast.makeText(MainActivity.this, "第"+i+"页", Toast.LENGTH_SHORT).show();
index=i;
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(100);
}
},0,3000);
}
}
适配器代码
public class MyAdapter extends PagerAdapter {
private List<String> lists;
private Context context;
private LayoutInflater inflater;
public MyAdapter(List<String> lists, Context context) {
this.lists = lists;
this.context = context;
inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return lists.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view==o;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View inflate = inflater.inflate(R.layout.vg_item, null);
TextView tv = inflate.findViewById(R.id.tv_item);
tv.setText(lists.get(position));
container.addView(inflate);
return inflate;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
ViewPager与Fragment结合(翻页)
main代码
public class MainActivity extends AppCompatActivity {
private List<Fragment> list=new ArrayList<Fragment>();
private ViewPager vp;
private int index=0;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==100){
vp.setCurrentItem(index);
index++;
if(index==list.size()){
index=0;
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = findViewById(R.id.vp);
for (int i = 0; i < 5; i++) {
BlankFragment fragment = new BlankFragment();
Bundle bundle = new Bundle();
bundle.putString("key",i+"");
fragment.setArguments(bundle);
list.add(fragment);
}
vp.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
});
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(100);
}
},0,1000);
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
index=i;
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
}
Fragment代码
public class BlankFragment extends Fragment {
private TextView tv;
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View inflate = inflater.inflate(R.layout.fragment_blank, container, false);
tv = inflate.findViewById(R.id.tv);
Bundle arguments = getArguments();
String s = arguments.getString("key");
tv.setText("第"+s+"个");
return inflate;
}
}