feat: 首页导航图

无法切换页面
This commit is contained in:
niushuai233
2022-10-13 14:15:34 +08:00
parent af421e7615
commit 743bc55720
15 changed files with 373 additions and 7 deletions

View File

@@ -1,14 +1,65 @@
package cc.niushuai.project.devcontrol;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import android.os.Bundle;
import android.view.Menu;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import cc.niushuai.project.devcontrol.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding activityMainBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(activityMainBinding.getRoot());
// 设置底部导航栏
setBottomNavigationView();
}
/**
* 设置底部导航栏
*
* @author niushuai
* @date: 2022/10/13 10:42
*/
private void setBottomNavigationView() {
// 导航栏控制器 获取navController的方式不同
// 方式一
NavController navController = Navigation.findNavController(this, R.id.main_nav_host_fragment_activity);
// 方式二
// NavHostFragment fragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.main_nav_host_fragment_activity);
// NavController navController = fragment.getNavController();
// 顶部页签 右上角展开设置项
// AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
// // 设备页签
// R.id.id_bottom_nav_menu_device,
// // 日志页签
// R.id.id_bottom_nav_menu_log,
// // 设置页签
// R.id.id_bottom_nav_menu_set
// ).build();
// NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
// 底部导航栏
BottomNavigationView bottomNavView = this.findViewById(R.id.bottom_nav_view);
// 底部栏显示
NavigationUI.setupWithNavController(activityMainBinding.bottomNavView, navController);
}
}

View File

@@ -0,0 +1,45 @@
package cc.niushuai.project.devcontrol.ui.nav.main.device;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import cc.niushuai.project.devcontrol.databinding.MainNavFragmentDeviceBinding;
/**
* 设备页面ui
*
* @author niushuai
* @date: 2022/10/13 10:58
*/
public class NavDeviceFragment extends Fragment {
private MainNavFragmentDeviceBinding navFragmentDeviceBinding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
navFragmentDeviceBinding = MainNavFragmentDeviceBinding.inflate(inflater, container, false);
NavDeviceViewModel navDeviceViewModel = new ViewModelProvider(this).get(NavDeviceViewModel.class);
View rootView = navFragmentDeviceBinding.getRoot();
TextView textView = navFragmentDeviceBinding.navDeviceFragmentTextview;
navDeviceViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
navFragmentDeviceBinding = null;
}
}

View File

@@ -0,0 +1,18 @@
package cc.niushuai.project.devcontrol.ui.nav.main.device;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class NavDeviceViewModel extends ViewModel {
private final MutableLiveData<String> vText;
public NavDeviceViewModel() {
this.vText = new MutableLiveData<>();
this.vText.setValue("this is device view");
}
public MutableLiveData<String> getText() {
return this.vText;
}
}

View File

@@ -0,0 +1,41 @@
package cc.niushuai.project.devcontrol.ui.nav.main.log;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import cc.niushuai.project.devcontrol.databinding.MainNavFragmentLogBinding;
public class NavLogFragment extends Fragment {
private MainNavFragmentLogBinding navFragmentLogBinding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
navFragmentLogBinding = MainNavFragmentLogBinding.inflate(inflater, container, false);
NavLogViewModel navLogViewModel = new ViewModelProvider(this).get(NavLogViewModel.class);
View rootView = navFragmentLogBinding.getRoot();
TextView textView = navFragmentLogBinding.navLogFragmentTextview;
navLogViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
navFragmentLogBinding = null;
}
}

View File

@@ -0,0 +1,18 @@
package cc.niushuai.project.devcontrol.ui.nav.main.log;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class NavLogViewModel extends ViewModel {
private final MutableLiveData<String> vText;
public NavLogViewModel() {
this.vText = new MutableLiveData<>();
this.vText.setValue("this is log view");
}
public MutableLiveData<String> getText() {
return this.vText;
}
}

View File

@@ -0,0 +1,40 @@
package cc.niushuai.project.devcontrol.ui.nav.main.setup;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import cc.niushuai.project.devcontrol.databinding.MainNavFragmentSetUpBinding;
public class NavSetUpFragment extends Fragment {
private MainNavFragmentSetUpBinding navFragmentSetUpBinding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
navFragmentSetUpBinding = MainNavFragmentSetUpBinding.inflate(inflater, container, false);
NavSetUpViewModel navSetUpViewModel = new ViewModelProvider(this).get(NavSetUpViewModel.class);
View rootView = navFragmentSetUpBinding.getRoot();
TextView textView = navFragmentSetUpBinding.navSetupFragmentTextview;
navSetUpViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
navFragmentSetUpBinding = null;
}
}

View File

@@ -0,0 +1,18 @@
package cc.niushuai.project.devcontrol.ui.nav.main.setup;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class NavSetUpViewModel extends ViewModel {
private final MutableLiveData<String> vText;
public NavSetUpViewModel() {
this.vText = new MutableLiveData<>();
this.vText.setValue("this is setup view");
}
public MutableLiveData<String> getText() {
return this.vText;
}
}