一直以来,在写单Acitivty+Fragment的时候,标题栏的布局虽然 include 同一个,但是每次代码里都要对标题栏进行setText() ,而且每次都要写一遍标题栏的点击事件,而在以前的学习使用中,都没有考虑过去对它们进行一个优化。
下面用新的思路去解决一下。
用一个父类继承于Fragment,实现OncreateView方法,并添加相应抽象方法,用来返回 layout和title。子类在使用的时候,继承其父类,并返回子类的 layout和title。 这样,每次只需实现父类的抽象方法,即可以实现免 setText等。下面看实现过程。
public abstract class FragmentSupper extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getContext(), getLayoutid(), null); TextView textView = view.findViewById(R.id.title); textView.setText(setTitle()); getView(view); return view; } //返回view public abstract void getView(View view); //用来获取子类的layout public abstract Integer getLayoutid(); //获取子类title public abstract String setTitle(); }
public class Tianqi extends FragmentSupper { @Override public void getView(View view) { //这里拿到你的View } //实现抽象方法,返回layout public Integer getLayoutid() { return R.layout.tianqi; } //返回title @Override public String setTitle() { return "Title"; } }