Commit 3e7cdedb by 段启岩

添加BaseActivity和BaseFragment

parent 1c2597cf
package cn.yunliyunwai.beyondclouds; package cn.yunliyunwai.beyondclouds;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import android.os.Bundle;
import android.view.MenuItem;
import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.bottomnavigation.BottomNavigationView;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import cn.yunliyunwai.beyondclouds.base.BaseActivity;
import cn.yunliyunwai.beyondclouds.databinding.ActivityMainBinding; import cn.yunliyunwai.beyondclouds.databinding.ActivityMainBinding;
import cn.yunliyunwai.beyondclouds.ui.DynamicFragment; import cn.yunliyunwai.beyondclouds.ui.DynamicFragment;
import cn.yunliyunwai.beyondclouds.ui.HomeFragment; import cn.yunliyunwai.beyondclouds.ui.HomeFragment;
...@@ -21,30 +22,30 @@ import cn.yunliyunwai.beyondclouds.ui.MyFragment; ...@@ -21,30 +22,30 @@ import cn.yunliyunwai.beyondclouds.ui.MyFragment;
import cn.yunliyunwai.beyondclouds.ui.ProjectFragment; import cn.yunliyunwai.beyondclouds.ui.ProjectFragment;
import cn.yunliyunwai.beyondclouds.ui.QAFragment; import cn.yunliyunwai.beyondclouds.ui.QAFragment;
import cn.yunliyunwai.beyondclouds.util.StatusBarUtils; import cn.yunliyunwai.beyondclouds.util.StatusBarUtils;
import cn.yunliyunwai.beyondclouds.viewmodel.MainViewModel;
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener { public class MainActivity extends BaseActivity<ActivityMainBinding> implements BottomNavigationView.OnNavigationItemSelectedListener {
private List<Fragment> fragments; private List<Fragment> fragments;
private MainViewModel mainViewModel; private MainViewModel mainViewModel;
private ActivityMainBinding binding;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
StatusBarUtils.setWindowStatusBarColor(this, R.color.colorStatusBar); StatusBarUtils.setWindowStatusBarColor(this, R.color.colorStatusBar);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
mainViewModel = new ViewModelProvider(this, MainViewModel.factory).get(MainViewModel.class); mainViewModel = new ViewModelProvider(this, MainViewModel.factory).get(MainViewModel.class);
initBottomNavigation(savedInstanceState); initBottomNavigation(savedInstanceState);
} }
@Override
protected ActivityMainBinding initDataBinding(LayoutInflater inflater) {
return ActivityMainBinding.inflate(inflater);
}
private void initBottomNavigation(Bundle savedInstanceState) { private void initBottomNavigation(Bundle savedInstanceState) {
fragments = new ArrayList<>(5); fragments = new ArrayList<>(5);
fragments.add(new HomeFragment()); fragments.add(new HomeFragment());
......
package cn.yunliyunwai.beyondclouds.base;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewbinding.ViewBinding;
public abstract class BaseActivity<B extends ViewBinding> extends AppCompatActivity {
protected B binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = initDataBinding(getLayoutInflater());
setContentView(binding.getRoot());
}
/**
* 初始化dataBinding
* @return
*/
protected abstract B initDataBinding(LayoutInflater inflater);
}
package cn.yunliyunwai.beyondclouds.base;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewbinding.ViewBinding;
public abstract class BaseFragment<B extends ViewBinding> extends Fragment {
protected B binding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = initDataBinding(inflater, container);
return binding.getRoot();
}
/**
* 初始化dataBinding
* @return
*/
protected abstract B initDataBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container);
}
...@@ -7,23 +7,21 @@ import android.view.ViewGroup; ...@@ -7,23 +7,21 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import cn.yunliyunwai.beyondclouds.base.BaseFragment;
import cn.yunliyunwai.beyondclouds.databinding.FragmentDynamicBinding; import cn.yunliyunwai.beyondclouds.databinding.FragmentDynamicBinding;
public class DynamicFragment extends Fragment { public class DynamicFragment extends BaseFragment<FragmentDynamicBinding> {
private FragmentDynamicBinding binding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = FragmentDynamicBinding.inflate(inflater, container, false);
return binding.getRoot();
}
@Override @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
} }
@Override
protected FragmentDynamicBinding initDataBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
return FragmentDynamicBinding.inflate(inflater, container, false);
}
} }
...@@ -20,20 +20,19 @@ import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerInd ...@@ -20,20 +20,19 @@ import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerInd
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView; import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import cn.yunliyunwai.beyondclouds.R; import cn.yunliyunwai.beyondclouds.R;
import cn.yunliyunwai.beyondclouds.base.BaseFragment;
import cn.yunliyunwai.beyondclouds.components.CommonPagerIndicator; import cn.yunliyunwai.beyondclouds.components.CommonPagerIndicator;
import cn.yunliyunwai.beyondclouds.components.ScaleTransitionPagerTitleView; import cn.yunliyunwai.beyondclouds.components.ScaleTransitionPagerTitleView;
import cn.yunliyunwai.beyondclouds.databinding.FragmentCategoryBinding; import cn.yunliyunwai.beyondclouds.databinding.FragmentCategoryBinding;
import cn.yunliyunwai.beyondclouds.databinding.FragmentHomeBinding; import cn.yunliyunwai.beyondclouds.databinding.FragmentHomeBinding;
import cn.yunliyunwai.beyondclouds.viewmodel.HomeFragmentViewModel;
public class HomeFragment extends Fragment { public class HomeFragment extends BaseFragment<FragmentHomeBinding> {
private HomeFragmentViewModel homeFragmentViewModel = null; private HomeFragmentViewModel homeFragmentViewModel = null;
private FragmentHomeBinding binding;
@Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { protected FragmentHomeBinding initDataBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
binding = FragmentHomeBinding.inflate(inflater, container, false); return FragmentHomeBinding.inflate(inflater, container, false);
return binding.getRoot();
} }
@Override @Override
......
...@@ -7,23 +7,22 @@ import android.view.ViewGroup; ...@@ -7,23 +7,22 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import cn.yunliyunwai.beyondclouds.base.BaseFragment;
import cn.yunliyunwai.beyondclouds.databinding.FragmentMyBinding; import cn.yunliyunwai.beyondclouds.databinding.FragmentMyBinding;
public class MyFragment extends Fragment { public class MyFragment extends BaseFragment<FragmentMyBinding> {
private FragmentMyBinding binding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = FragmentMyBinding.inflate(inflater, container, false);
return binding.getRoot();
}
@Override @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
} }
@Override
protected FragmentMyBinding initDataBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
return FragmentMyBinding.inflate(inflater, container, false);
}
} }
...@@ -7,19 +7,16 @@ import android.view.ViewGroup; ...@@ -7,19 +7,16 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import cn.yunliyunwai.beyondclouds.base.BaseFragment;
import cn.yunliyunwai.beyondclouds.databinding.FragmentProjectBinding; import cn.yunliyunwai.beyondclouds.databinding.FragmentProjectBinding;
public class ProjectFragment extends Fragment { public class ProjectFragment extends BaseFragment<FragmentProjectBinding> {
private FragmentProjectBinding binding;
@Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { protected FragmentProjectBinding initDataBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
binding = FragmentProjectBinding.inflate(inflater, container, false); return FragmentProjectBinding.inflate(inflater, container, false);
return binding.getRoot();
} }
@Override @Override
......
...@@ -7,23 +7,20 @@ import android.view.ViewGroup; ...@@ -7,23 +7,20 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import cn.yunliyunwai.beyondclouds.base.BaseFragment;
import cn.yunliyunwai.beyondclouds.databinding.FragmentQaBinding; import cn.yunliyunwai.beyondclouds.databinding.FragmentQaBinding;
public class QAFragment extends Fragment { public class QAFragment extends BaseFragment<FragmentQaBinding> {
private FragmentQaBinding binding;
@Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
binding = FragmentQaBinding.inflate(inflater, container, false); super.onViewCreated(view, savedInstanceState);
return binding.getRoot();
} }
@Override @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { protected FragmentQaBinding initDataBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
super.onViewCreated(view, savedInstanceState); return FragmentQaBinding.inflate(inflater, container, false);
} }
} }
package cn.yunliyunwai.beyondclouds.ui; package cn.yunliyunwai.beyondclouds.viewmodel;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
......
package cn.yunliyunwai.beyondclouds; package cn.yunliyunwai.beyondclouds.viewmodel;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModel;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment