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