From 2c2b6a3821d1e4ffbb2a0511d45943aae1992e55 Mon Sep 17 00:00:00 2001
From: Administrator <123>
Date: Wed, 27 Oct 2021 08:20:51 +0000
Subject: [PATCH] baseactivity binding搭建
---
app/src/main/java/com/duqing/missions/ui/home/HomeFragment.java | 1
app/src/main/java/com/duqing/missions/base/BaseActivity.java | 34 +++++++++++++++++
app/src/main/java/com/duqing/missions/ui/notifications/NotificationsFragment.java | 23 ++++-------
app/src/main/java/com/duqing/missions/MainActivity.java | 14 +++----
4 files changed, 49 insertions(+), 23 deletions(-)
diff --git a/app/src/main/java/com/duqing/missions/MainActivity.java b/app/src/main/java/com/duqing/missions/MainActivity.java
index 6ee57ce..3d0f16a 100644
--- a/app/src/main/java/com/duqing/missions/MainActivity.java
+++ b/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(
diff --git a/app/src/main/java/com/duqing/missions/base/BaseActivity.java b/app/src/main/java/com/duqing/missions/base/BaseActivity.java
new file mode 100644
index 0000000..cd24d4d
--- /dev/null
+++ b/app/src/main/java/com/duqing/missions/base/BaseActivity.java
@@ -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());
+ }
+}
diff --git a/app/src/main/java/com/duqing/missions/ui/home/HomeFragment.java b/app/src/main/java/com/duqing/missions/ui/home/HomeFragment.java
index 02ad0bd..9e8e621 100644
--- a/app/src/main/java/com/duqing/missions/ui/home/HomeFragment.java
+++ b/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;
diff --git a/app/src/main/java/com/duqing/missions/ui/notifications/NotificationsFragment.java b/app/src/main/java/com/duqing/missions/ui/notifications/NotificationsFragment.java
index 204b7fa..7ca38c9 100644
--- a/app/src/main/java/com/duqing/missions/ui/notifications/NotificationsFragment.java
+++ b/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;
}
+
}
\ No newline at end of file
--
Gitblit v1.9.1