创建BaseMainActivity 继承 AppCompatActivity并抽取基类
package jiaoyibo.bawei.com.zong.base;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
/**
* <p>文件描述:<p>
* <p>作者:JYB<p>
* <p>创建时间:2019/1/7<p>
* <p>更改时间:2019/1/7<p>
* <p>版本号:1<p>
*/
public abstract class BaseMainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutId());
initView();
initData();
}
//抽取设置监听的方法
protected abstract void initData();
//抽取加载数据的方法
protected abstract void initView();
//抽取加载布局的方法
protected abstract int getLayoutId();
}
MainActivity
package jiaoyibo.bawei.com.zong;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import jiaoyibo.bawei.com.zong.base.BaseMainActivity;
import jiaoyibo.bawei.com.zong.fragment.FragmentOne;
import jiaoyibo.bawei.com.zong.fragment.FragmentThree;
import jiaoyibo.bawei.com.zong.fragment.FragmentTwo;
public class MainActivity extends BaseMainActivity {
private TextView mTextMessage;
private List<Fragment> list = new ArrayList<>();
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.one:
viewPager.setCurrentItem(0);
return true;
case R.id.two:
viewPager.setCurrentItem(1);
return true;
case R.id.three:
viewPager.setCurrentItem(2);
return true;
}
return false;
}
};
private ViewPager viewPager;
private BottomNavigationView navigation;
@Override
protected void initData() {
list.add(new FragmentOne());
list.add(new FragmentTwo());
list.add(new FragmentThree());
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
});
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch (i){
case 0:
navigation.setSelectedItemId(R.id.one);
break;
case 1:
navigation.setSelectedItemId(R.id.two);
break;
case 2:
navigation.setSelectedItemId(R.id.three);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
@Override
protected void initView() {
viewPager = findViewById(R.id.viewPager);
mTextMessage = (TextView) findViewById(R.id.message);
navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}
@Override
protected int getLayoutId() {
return R.layout.activity_main;
}
}
创建BaseFragMent 继承 FragMent 并抽取基类
package jiaoyibo.bawei.com.zong.base;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* <p>文件描述:<p>
* <p>作者:JYB<p>
* <p>创建时间:2019/1/7<p>
* <p>更改时间:2019/1/7<p>
* <p>版本号:1<p>
*/
public abstract class BaseFragMent extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(getLayoutId(),container,false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
initView(view);
initData();
}
//抽取设置监听的方法
protected abstract void initData();
//抽取加载数据的方法
protected abstract void initView(View view);
//抽取加载布局的方法
protected abstract int getLayoutId();
}
Fragment
package jiaoyibo.bawei.com.zong.fragment;
import android.view.View;
import jiaoyibo.bawei.com.zong.R;
import jiaoyibo.bawei.com.zong.base.BaseFragMent;
/**
* <p>文件描述:<p>
* <p>作者:JYB<p>
* <p>创建时间:2019/1/7<p>
* <p>更改时间:2019/1/7<p>
* <p>版本号:1<p>
*/
public class FragmentOne extends BaseFragMent {
@Override
protected void initData() {
}
@Override
protected void initView(View view) {
}
@Override
protected int getLayoutId() {
return R.layout.fragment_01;
}
}