关于android的一点小问题
是这样,我想做一个和网易云和qq类似的抽屉+底部导航。因为刚学android没几天,也不知道现在的安卓app都是一套什么方式。我是将android提供的模板进行改造,现在/%ra2就是返回键的问题没有解决。
先说下我的实现方式吧,这个是主界面
然后点击侧边栏菜单导航到新的activity,然后新的activity有一套自己的navigation。切换activity的时候根据点击的菜单选项传递相应的fragmentId(navigation.xml中的id),然后导航过去后就使用avController.navigate(id)导航到指定的页面,现在有一个问题就是navigation有一个初始目的地,我这样切换会先跳转到初始目的地然后再挑战到最终的fragment。这样我点击返回bar时就要点两下,包括返回键也一样。不过back键可以重写直接返回上一个activity,但是bar设置相同的模式却还是需要点两下才能返回主界面。这个要怎么做呢?
//主activity,监听进行跳转
NavigationView navigationView = findViewById(R.id.nav_view_left);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
switch (item.getItemId()){
case R.id.nav_news:
intent.putExtra("id",R.id.newsFragment);
break;
case R.id.nav_gallery:
intent.putExtra("id",R.id.galleryFragment);
break;
case R.id.nav_slideshow:
intent.putExtra("id",R.id.slideshowFragment);
break;
}
startActivityForResult(intent,3);
return false;
}
});
跳转的activity
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentContainerView2);
NavController navController = navHostFragment.getNavController();
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder()
.setFallbackOnNavigateUpListener(this::onSupportNavigateUp).build();
Toolbar toolbar = findViewById(R.id.toolbar);
NavigationUI.setupWithNavController(toolbar,navController,appBarConfiguration);
int id = getIntent().getIntExtra("id", R.id.newsFragment);
navController.navigate(id);
}
@Override
public boolean onSupportNavigateUp() {
Intent intent = new Intent();
setResult(RESULT_OK,intent);
finish();
return true;
}
@Override
public void onBackPressed() {
Intent intent = new Intent();
setResult(RESULT_OK,intent);
finish();
}
}
然后我想问一下目前的androidApp都是怎么安排的啊,是单Activity+多fragment还是多activity+多fragment呢?我看有人说谷歌官方推荐是前者,但我在官网最佳做法没找到,不知道这两个方式哪种好呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
NavigationView
、BottomNavigationView
的使用指南见:使用 NavigationUI 更新界面组件(Update UI components with NavigationUI )
再说
Single Activity
和Multiple Activity
的选择问题,根据实际情况选择吧。很多人拆分App页面可能是这样的:Acitivtiy
Acitivtiy
,e.g.SignInActivity
、SignUpActivity
Acitivtiy
,但是以Single Activity
形式管理其功能页面。p.s.可以上github上找找大牛们写的
MVVM
框架&Demo。