【问题标题】:Android - Cannot find symbol variable drawer_open when implementing navigation barAndroid - 实现导航栏时找不到符号变量drawer_open
【发布时间】:2015-06-16 08:36:03
【问题描述】:

我正在尝试在我的 android 应用程序中实现导航栏。但是,我的编译器抱怨以下错误:

错误:(39, 25) 错误: 找不到符号变量抽屉_open

错误:(39, 47) 错误:找不到符号变量drawer_close

我的代码:

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;



public class MainActivity extends ActionBarActivity {
    /***********************************************************
                            MEMBERS
     **********************************************************/
    private Toolbar m_toolbar;
    private String m_navTitles[] = {"Nr. 1", "Nr. 2", "Nr. 3", "Nr. 4" };
    private int m_icons[] = {R.drawable.ic_action, R.drawable.ic_action, R.drawable.ic_action, R.drawable.ic_action};
    private DrawerLayout m_drawer;
    private ActionBarDrawerToggle m_drawerToggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /* Set toolbar */
        m_toolbar = (Toolbar) findViewById(R.id.tool_bar); //find toolbar from layout
        setSupportActionBar(m_toolbar); //call to set toolbar as the ActionBar

        /* Set navigation drawer */
        m_drawer = (DrawerLayout) findViewById(R.id.DrawerLayout); //assign drawer object to view
        m_drawerToggle = new ActionBarDrawerToggle(this, m_drawer, m_toolbar, R.string.drawer_open, R.string.drawer_close){
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                // code here will execute once the drawer is opened
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                // Code here will execute once drawer is closed
            }

        }; // made drawer toggle object
        m_drawer.setDrawerListener(m_drawerToggle);
        m_drawerToggle.syncState();               
    }

请注意,我的导航抽屉代码尚未完成。我想先修复drawer_open/drawer_close错误。

非常感谢!

【问题讨论】:

    标签: android navigation drawer


    【解决方案1】:

    您的 strings.xml 中有 drawer_opendrawer_close 吗?

    我认为您没有在字符串中添加这两个字符串。

    【讨论】:

    • 我遵循的教程没有提到strings.xml。会有什么价值?
    • @Gybelle 您需要将<string name="drawer_open">drawer open</string> <string name="drawer_close">drawer close</string> 添加到您的strings.xml 中。它的价值取决于你。
    【解决方案2】:

    试试这个你的 pbm 在这里解决了复制这个代码并替换你的:

    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    
    
    
    public class MainActivity extends ActionBarActivity {
        /***********************************************************
                                MEMBERS
         **********************************************************/
        private Toolbar m_toolbar;
        private String m_navTitles[] = {"Nr. 1", "Nr. 2", "Nr. 3", "Nr. 4" };
        private int m_icons[] = {R.drawable.ic_action, R.drawable.ic_action, R.drawable.ic_action, R.drawable.ic_action};
        private DrawerLayout m_drawer;
        private ActionBarDrawerToggle m_drawerToggle;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /* Set toolbar */
            m_toolbar = (Toolbar) findViewById(R.id.tool_bar); //find toolbar from layout
            setSupportActionBar(m_toolbar); //call to set toolbar as the ActionBar
    
            /* Set navigation drawer */
            m_drawer = (DrawerLayout) findViewById(R.id.DrawerLayout); //assign drawer object to view
            m_drawerToggle = new ActionBarDrawerToggle(this, m_drawer, m_toolbar, "drawer_open", "drawer_close"){
                @Override
                public void onDrawerOpened(View drawerView) {
                    super.onDrawerOpened(drawerView);
                    // code here will execute once the drawer is opened
                }
    
                @Override
                public void onDrawerClosed(View drawerView) {
                    super.onDrawerClosed(drawerView);
                    // Code here will execute once drawer is closed
                }
    
            }; // made drawer toggle object
            m_drawer.setDrawerListener(m_drawerToggle);
            m_drawerToggle.syncState();               
        }
    

    【讨论】:

    • 但是现在您将字符串值提供给 ActionBarDrawerToggle 的构造函数,其中需要 int 值。这段代码仍然不起作用。 (但谢谢!)
    猜你喜欢
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2017-09-07
    • 2017-09-28
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多