Administrator
2021-10-27 2c2b6a3821d1e4ffbb2a0511d45943aae1992e55
baseactivity binding搭建
1 files added
3 files modified
72 ■■■■■ changed files
app/src/main/java/com/duqing/missions/MainActivity.java 14 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/base/BaseActivity.java 34 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/home/HomeFragment.java 1 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/notifications/NotificationsFragment.java 23 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/MainActivity.java
@@ -1,26 +1,24 @@
package com.duqing.missions;
import android.os.Bundle;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.duqing.missions.base.BaseActivity;
import com.duqing.missions.databinding.ActivityMainBinding;
import com.google.android.material.bottomnavigation.BottomNavigationView;
public class MainActivity extends AppCompatActivity {
public class MainActivity extends BaseActivity<ActivityMainBinding> {
private ActivityMainBinding binding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     binding = ActivityMainBinding.inflate(getLayoutInflater());
     setContentView(binding.getRoot());
        BottomNavigationView navView = findViewById(R.id.nav_view);
        BottomNavigationView navView = binding.navView;
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
app/src/main/java/com/duqing/missions/base/BaseActivity.java
New file
@@ -0,0 +1,34 @@
package com.duqing.missions.base;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewbinding.ViewBinding;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
/**
 * Created by Administrator on 2021/10/27 0027.
 */
public abstract class BaseActivity<B extends ViewBinding> extends AppCompatActivity {
    protected  B binding;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // get genericity "B"
        Class<B> entityClass = (Class<B>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        try {
            Method method = entityClass.getMethod("inflate", LayoutInflater.class);//get method from name "inflate";
            binding = (B) method.invoke(entityClass,getLayoutInflater());//execute method to create a objct of viewbind;
        } catch (Exception e) {
            e.printStackTrace();
        }
        setContentView(binding.getRoot());
    }
}
app/src/main/java/com/duqing/missions/ui/home/HomeFragment.java
@@ -16,7 +16,6 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.duqing.missions.R;
import com.duqing.missions.databinding.FragmentHomeBinding;
import com.scwang.smart.refresh.header.ClassicsHeader;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
app/src/main/java/com/duqing/missions/ui/notifications/NotificationsFragment.java
@@ -4,41 +4,36 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.duqing.missions.R;
import com.duqing.missions.databinding.FragmentNotificationsBinding;
public class NotificationsFragment extends Fragment {
    private NotificationsViewModel notificationsViewModel;
private FragmentNotificationsBinding binding;
    private FragmentNotificationsBinding binding;
    public View onCreateView(@NonNull LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        notificationsViewModel =
                new ViewModelProvider(this).get(NotificationsViewModel.class);
    binding = FragmentNotificationsBinding.inflate(inflater, container, false);
    View root = binding.getRoot();
        final TextView textView = binding.textNotifications;
    public View onCreateView(@NonNull LayoutInflater inflater,  ViewGroup container, Bundle savedInstanceState) {
        notificationsViewModel = new ViewModelProvider(this).get(NotificationsViewModel.class);
        binding = FragmentNotificationsBinding.inflate(inflater, container, false);
        View root = binding.getRoot();
        notificationsViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });
        return root;
    }
@Override
    @Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
}