Android Studio中导航抽屉的问题

时间:2017-05-24 11:23:27

标签: java android android-navigation-drawer

Android中的导航抽屉有一个问题。

我在Empty活动中,我需要传递给Navigation Drawer,我的代码在 空活动

final Button Login = (Button) findViewById(R.id.btnLogin);
    Login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent new_from = new Intent(Login.this, MainActivity.class);
            startActivity(new_from);
        }
    });

此代码是正确的。

抽屉类是:

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

现在,在抽屉里,问题是这一行

setSupportActionBar(toolbar);

最后一行关闭了我的申请。

PD:所有活动都在清单中。

谢谢,快乐的一天

2 个答案:

答案 0 :(得分:0)

由于您没有提供有关此问题的所有信息,我将解决此问题,假设您没有为导航抽屉设置正确的条件,并且很可能在设置工具栏的活动和默认情况下存在冲突问题主题。

如果要以您在MainActivity(setSupportActionBar(工具栏))中编写的方式创建带有工具栏的导航抽屉,则需要更改应用主题。

您可以在清单文件中执行此操作:

android:theme="@android:style/Theme.NoTitleBar"

您也可以在res / values / styles.xml中更改它:

使用自定义主题

<style name = "AppTheme" parent = "android:Theme.Holo.Light.DarkActionBar">
    <!-- Customize your theme here. -->
</style>

<style name = "NoActionBar" parent = "@android:style/Theme.Holo.Light">
    <item name = "android:windowActionBar">false</item>
    <item name = "android:windowNoTitle">true</item>
</style>

或者只是替换主题(更好的方式来自清单):

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

如果您想以其他方式设置导航抽屉,请查看此链接以获取有关此主题的更多帮助:

StackOverflow - How to create Android Custom Striped Navigation Drawer
Android Developer
JournalDev
TeamTreeHouse

答案 1 :(得分:0)

由于您已添加工具栏并以编程方式将其设置为操作栏,因此您需要更改样式

转到清单并编辑您的抽屉活动代码,如下所示:

<activity 
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        android:name=".MainActivity">
</activity>