Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 导航抽屉汉堡图标丢失_Android - Fatal编程技术网

Android 导航抽屉汉堡图标丢失

Android 导航抽屉汉堡图标丢失,android,Android,我这里有一个设置导航抽屉的代码。所有工作正常,但应在那里单击并打开抽屉的汉堡图标未出现。Main活动: import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import a

我这里有一个设置导航抽屉的代码。所有工作正常,但应在那里单击并打开抽屉的汉堡图标未出现。Main活动:

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.defcomm.invento.NavigationDrawerActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

public class INVENTO extends AppCompatActivity {

private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_invento);
    toolbar= (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    NavigationDrawerActivity drawerFragment= (NavigationDrawerActivity)   getSupportFragmentManager().
            findFragmentById(R.id.navigation_drawer);
        drawerFragment.setUp(R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawerlayout), toolbar);


}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_invento, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

导航效率:

 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
  import android.support.v4.widget.DrawerLayout;
 import android.support.v7.app.ActionBarDrawerToggle;
 import android.support.v7.widget.Toolbar;
  import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;


 /**
 * A simple {@link Fragment} subclass.
*/
public class NavigationDrawerActivity extends Fragment {


private ActionBarDrawerToggle mdrawerToggle;
private DrawerLayout mdrawerLayout;

private boolean  mUserLearnedState;
View containerId;
public static final String file_pref_name="Testpef";
public static final String KEY_USER_VALUE="user_learned_drawer";
private boolean mfromSavedInstanceState;
public NavigationDrawerActivity() {
    // Required empty public constructor
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mUserLearnedState=Boolean.valueOf(readPreference(getActivity(),   KEY_USER_VALUE, "false"));
    if (savedInstanceState!=null){
        mfromSavedInstanceState=true;
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_navigation_drawer, container, false);

}


public void setUp(int fragmentId,DrawerLayout drawerlayout,Toolbar toolbar) {
    mdrawerLayout=drawerlayout;
    containerId=getActivity().findViewById(fragmentId);
    mdrawerToggle= new ActionBarDrawerToggle(getActivity(),drawerlayout,
            R.string.drawer_open,R.string.drawer_close){
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            if(!mUserLearnedState){
                mUserLearnedState=true;
                saveToPreference(getActivity(),KEY_USER_VALUE,mUserLearnedState+"");
            }
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            mdrawerToggle.setDrawerIndicatorEnabled(true);
            getActivity().invalidateOptionsMenu();
        }
    };
    if(!mUserLearnedState&&!mfromSavedInstanceState){
        mdrawerLayout.openDrawer(containerId);
    }

    mdrawerLayout.setDrawerListener(mdrawerToggle);

    mdrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mdrawerToggle.syncState();
            mdrawerToggle.setDrawerIndicatorEnabled(true);
        }
    });

}
public static void saveToPreference (Context context,String preferenceName,String preferenceValue){
    SharedPreferences shared= context.getSharedPreferences(file_pref_name, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor=shared.edit();
    editor.putString(preferenceName,preferenceValue);
    editor.apply();
}
public static String readPreference(Context context,String preferenceName,String defaultValue){
    SharedPreferences share= context.getSharedPreferences(file_pref_name,Context.MODE_PRIVATE);
    return share.getString(preferenceName,defaultValue);
}
}

mainactivity.xml

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/drawerlayout"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<RelativeLayout  android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <include
        layout="@layout/app_bar"
        android:id="@+id/app_bar"/>
    <TextView
        android:layout_below="@+id/app_bar"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>
<fragment
    android:id="@+id/navigation_drawer"
    android:layout_width="@dimen/drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:layout="@layout/fragment_navigation_drawer"
    android:name="com.defcomm.invento.NavigationDrawerActivity"
    tools:layout="@layout/fragment_navigation_drawer" />

我不知道这其中的错误在哪里。我正在使用这里的自定义工具栏交叉检查。但没用。我不知道故障是否真的在这里。请帮忙

  final ActionBar actionBar = getSupportActionBar();
    if(actionBar!=null)
    {
        actionBar.setHomeAsUpIndicator(android.R.drawable.ic_drawer);
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
在您的任何活动中使用上述代码来放置导航抽屉的图标。你甚至可以在不同的活动中更改它

使用以下代码--


manifest.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryColor</item>
        <item name="colorAccent">@color/primaryColor</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:textColorPrimary">@android:color/white</item>
        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
        <item name="actionMenuTextColor">@android:color/holo_blue_dark</item>
        <item name="android:actionMenuTextColor">@android:color/holo_blue_dark</item>
        <item name="android:windowBackground">@android:color/white</item>
        <item name="android:screenOrientation">portrait</item>
    </style>

    <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="spinBars">true</item>
        <item name="color">@android:color/white</item>
    </style>

    <style name="ToolBarStyle" parent="">
        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
        <item name="theme">@style/ThemeOverlay.AppCompat.Light</item>
    </style>
并在活动的
onCreate
中调用此方法

setupNavigationView();
这是上面的方法

private void setupNavigationView() {
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);

        ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.drawer_open, R.string.drawer_close) {

            @Override
            public void onDrawerClosed(View drawerView) {
                // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
                super.onDrawerClosed(drawerView);
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank

                super.onDrawerOpened(drawerView);
            }
        };

        //Setting the actionbarToggle to drawer layout
        mDrawerLayout.setDrawerListener(actionBarDrawerToggle);

        //calling sync state is necessay or else your hamburger icon wont show up
        actionBarDrawerToggle.syncState();


    }

好的,很抱歉,我犯了一个错误,我的自定义工具栏犯了一个错误,我没有将它作为参数传递给mdrawerToggle。现在它工作正常。

我的mainactivity.xml文件如下所示:检查这个编辑的答案,它经过测试,工作正常!先生,我在我的项目中使用了这种方法,但单击它时抽屉不会弹出。请帮助我。虽然按钮正在显示,但让我给您一个简单的解决方案,这将帮助您理解。并且会给你一个预煮的代码。如果您正在使用eclipse,请单击文件>新建>其他>Android>AndroidActivityNavigationDrawer及其在Android Studio中的类似功能。右键单击软件包>新建文件>活动>导航抽屉活动。试一下这个,你就会明白所有的流程。请参阅上一篇文章中编辑的答案。我尝试键入这个,但出现错误。也许我不知道要键入到哪里。请告诉我要键入到哪里。
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setTitle("Your Title");
setupNavigationView();
private void setupNavigationView() {
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);

        ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.drawer_open, R.string.drawer_close) {

            @Override
            public void onDrawerClosed(View drawerView) {
                // Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
                super.onDrawerClosed(drawerView);
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                // Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank

                super.onDrawerOpened(drawerView);
            }
        };

        //Setting the actionbarToggle to drawer layout
        mDrawerLayout.setDrawerListener(actionBarDrawerToggle);

        //calling sync state is necessay or else your hamburger icon wont show up
        actionBarDrawerToggle.syncState();


    }