我知道这个问题已被多次询问过。但我的担忧是不同的。
使用Mr. Tamada Tutorial我已在NavigaionActivity
中创建了fragments
和多个FrameLayout
来替换。它工作正常。
现在,在片段中选择任何选项后,另一个活动将被打开。
我想在该活动中使用相同的导航菜单。
导航视图 - 片段 - 活动(此处显示导航视图)
我尝试了什么:
使用xml
代码在该活动中显示Navigation view
。
(DrawerLayout,CoordinatorLayout,AppBarLayout等)
然后在Activity.java中,点击转移到导航活动的菜单项。
代码:
XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
....>
<android.support.design.widget.CoordinatorLayout
....>
<android.support.design.widget.AppBarLayout
....>
<android.support.v7.widget.Toolbar
.... />
</android.support.design.widget.AppBarLayout>
<LinearLayout
.... /> <!-- main content of this Acitivity-->
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
.... />
</android.support.v4.widget.DrawerLayout>
Activity.java:
public void dashboard(MenuItem item) {
Bundle bundle = new Bundle();
bundle.putString("fragment", Constant.DASHBOARD_FRAGMENT);
UtilityClass.newActivity(this, NavigationActivity.class, bundle);
}
处理导航活动上的调用。它正在执行任务,但代码不可重复使用
还有其他办法吗?
答案 0 :(得分:1)
Downvoters - 这里的解决方案是......
xml
文件,其中包含DrawerLayout
和NavigationView
(可以使用问题中给出的xml,不含主要内容) - navigation.xml
正如许多答案中所建议的那样,“创建一个extends
AppCompatActivity的基础活动。并且膨胀navigation.xml
。
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = View.inflate(this, R.layout.navigation, null);
// view declarations
DrawerLayout drawer = (DrawerLayout) view.findViewById(R.id.drawer_layout);
NavigationView navigationView = (NavigationView) view.findViewById(R.id.nav_view);
...... }}
在您想要使用此Activity
的任何NavigationMenu
中,为该类扩展BaseActivity。
GraphActivity extends BaseActivity { .... }
在GraphActivity.xml
中添加NavigationMenu
代码。您不能只包含navigation.xml
它将禁用当前的xml小部件。
完成!
答案 1 :(得分:1)
试试这个:
public class MainActivity extends BaseActivity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_describtion);
getLayoutInflater().inflate(R.layout.activity_main, frameLayout);
mDrawerList.setItemChecked(position, true);
}
答案 2 :(得分:0)
而是使用Google推荐的 MasterDetailFlow Design
您可以在
上阅读如何实现此功能https://inducesmile.com/android/android-fragment-masterdetail-flow-tutorial-in-android-studio/
答案 3 :(得分:-4)
NavigationDrawer已被删除....使用其他东西因为它使用起来不太舒服。