টুলবারের হোম বোতাম ক্লিক ইভেন্টটি ধরতে পারে না


106

আমি সর্বাধিক নতুন অ্যাপকম্প্যাট লাইব্রেরি প্রয়োগ করেছি এবং Toolbarঅ্যাকশন বার হিসাবে ব্যবহার করছি । তবে সমস্যাটি হ'ল আমি হোম বোতাম / হ্যামবার্গার আইকন ক্লিক ইভেন্টটি ধরতে পারি না। আমি চেষ্টা করেছি এবং সবকিছু দেখেছি কিন্তু তেমন একটি সমস্যা বলে মনে হচ্ছে না।

এটি আমার Activityক্লাস:

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

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // Set up the drawer.
    navDrawerFragment = 
        (NavigationDrawerFragment) getSupportFragmentManager()
        .findFragmentById(R.id.navigation_drawer);
    navDrawerFragment.setUp(
        R.id.navigation_drawer, 
        (DrawerLayout) findViewById(R.id.drawer_layout), 
        toolbar);
}

এবং এটি আমার নেভিগেশন ড্রয়ারফ্র্যাগমেন্ট শ্রেণি:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        currentSelectedPosition = savedInstanceState.getInt(
            STATE_SELECTED_POSITION);
        fromSavedInstanceState = true;
    }

    // Select either the default item (0) or the last selected item.
    selectItem(currentSelectedPosition);
}

@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    // Indicate that this fragment would like 
    // to influence the set of actions in the action bar.
    setHasOptionsMenu(true);
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        drawerListView = (ListView) inflater.inflate(
            R.layout.fragment_navigation_drawer, container, false);
        drawerListView.setOnItemClickListener(
            new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, 
                View view, int position, long id) {
                selectItem(position);
            }
        });
        //mDrawerListView.setAdapter();
        //mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
        return drawerListView;
}

public void setUp(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
    fragmentContainerView = getActivity().findViewById(fragmentId);
    this.drawerLayout = drawerLayout;

    // set a custom shadow that overlays the main 
    // content when the drawer opens
    drawerLayout.setDrawerShadow(
        R.drawable.drawer_shadow, GravityCompat.START);
    // set up the drawer's list view 
    // with items and click listener

    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeButtonEnabled(true);

    // ActionBarDrawerToggle ties together the the proper interactions
    // between the navigation drawer and the action bar app icon.
    drawerToggle = new ActionBarDrawerToggle(
        getActivity(), 
        drawerLayout, 
        toolbar, 
        R.string.navigation_drawer_open, 
        R.string.navigation_drawer_close) {
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
        }

        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };

    // If the user hasn't 'learned' about the drawer, 
    // open it to introduce them to the drawer,
    // per the navigation drawer design guidelines.
    if (!userLearnedDrawer && !fromSavedInstanceState) {
        drawerLayout.openDrawer(fragmentContainerView);
    }

    // Defer code dependent on restoration of previous instance state.
    drawerLayout.post(new Runnable() {
        @Override
        public void run() {
            drawerToggle.syncState();
        }
    });

    drawerLayout.setDrawerListener(drawerToggle);
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt(STATE_SELECTED_POSITION, currentSelectedPosition);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Forward the new configuration the drawer toggle component.
    drawerToggle.onConfigurationChanged(newConfig);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Log.d("cek", "item selected");
    if (drawerToggle.onOptionsItemSelected(item)) {
        Log.d("cek", "home selected");
        return true;
    }

    return super.onOptionsItemSelected(item);
}

আমি যখন একটি মেনু আইটেম ক্লিক করি তখন লগটি "আইটেম নির্বাচিত" কল হয়। তবে আমি যখন হোম বোতামে ক্লিক করি তখন এটি নেভিগেশন ড্রয়ারটি খোলে কিন্তু "হোম নির্বাচিত" লগটি কখনই কল হয় না। আমি onOptionsItemSelectedআমার ভিতরেও পদ্ধতি স্থাপন করেছি Activity, তবে এটি এখনও কল হয় না called

উত্তর:


224

আপনি যদি বাড়িটি ক্লিক করা হয় তা জানতে চান AppCompatActivityতবে আপনার এটির মতো চেষ্টা করা উচিত:

প্রথমে অ্যান্ড্রয়েডকে বলুন যে আপনি নিজের Toolbarহিসাবে এটি ব্যবহার করতে চান ActionBar:

setSupportActionBar(toolbar);

তারপরে হোম এটির setDisplayShowHomeEnabledমতো প্রদর্শিত হতে সেট করুন :

getSupportActionBar().setDisplayShowHomeEnabled(true);

সর্বশেষের android.R.id.homeমতো ক্লিক ইভেন্টগুলির জন্য অবশেষে শুনুন :

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    if (menuItem.getItemId() == android.R.id.home) {
        Timber.d("Home pressed");
    }
    return super.onOptionsItemSelected(menuItem);
}

আপনি যদি জানতে চান যে কখন নেভিগেশন বোতামটি Toolbarক্লাসে অন্য কোনও ক্লাসে ক্লিক করা হয় তবে AppCompatActivityআপনি নেভিগেশন আইকন সেট করতে এই পদ্ধতিগুলি ব্যবহার করতে পারেন এবং এতে ক্লিক ইভেন্টগুলি শুনতে পারেন। নেভিগেশন আইকনটি আপনার Toolbar" বাম " বোতামটি যেখানে ব্যবহৃত হত তার বাম দিকে উপস্থিত হবে।

toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_nav_back));
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d("cek", "home selected");
    }
});

আপনি যদি জানতে চান যে হ্যামবার্গারটি কখন ক্লিক করা হয় এবং কখন ড্রয়ারটি খোলা হয়, আপনি ইতিমধ্যে এই ইভেন্টগুলির জন্য শুনছেন onDrawerOpenedএবং onDrawerClosedতাই আপনি যদি সেই কলব্যাকগুলি আপনার প্রয়োজনীয়তার সাথে খাপ খায় তা দেখতে চাইবেন।


1
এর আগে প্রথম অংশ চেষ্টা করেছিলাম, কিন্তু এটি কাজ করছে না। দ্বিতীয় অংশ চেষ্টা করে দেখেছি এবং এটি কাজ করে। তবে আমি যদি আইএএন ড্রয়ারের সাহায্যে সরঞ্জামদণ্ডটি নিবন্ধন করি তবে আইকনটি পরিবর্তন হয় না। আরও একটি প্রশ্ন, এর জন্য কি সেটড্রাওয়ার ইন্ডিকেটরএএনবেলেডের কোনও প্রতিস্থাপন রয়েছে? আমি এই নতুন নেভ ড্রয়ারটি দিয়ে চেষ্টা করেছি এবং ত্রুটি পেয়েছি। ধন্যবাদ
ডার্ক লিওনার্ট

দ্বিতীয় সমাধান কাজ করছে। তবে কীভাবে আমরা দ্বিতীয় সমাধানে হোম বোতাম ক্লিক এবং ড্রয়ার বোতাম সনাক্ত করতে পারি। যখন আমি ড্রয়ার আইকনে ক্লিক করছি এটি ড্রয়ারটি খুলছে না।
ডুরি

2
আপনি যখন সরঞ্জামদণ্ডের জন্য নেভিগেশনঅনলিক্লিকলিস্টনার সেট করেন তখন আপনি "নেটিভ" ড্রয়ারের আচরণটি হারাবেন :(
ইলিয়াআরমিন

7
সুতরাং এখন আমাদের একটি পৃথক ক্লিক শ্রোতার দরকার যখন টুকরাগুলির আগে আমরা অ্যানডিশন আইটেমসিলিগ্রেটেড () এ android.R.id.home পরীক্ষা করতে পারি? এটি সত্যিই খুব বিরক্তিকর
ড্যানিয়েল উইলসন

1
পুনঃ: সরঞ্জামদণ্ড, আপনি যদি একটি নতুন নেভিগেশনঅনল্লিকলিস্টার সেট করেন (সেটনিভিগেশনঅনক্লিকলাইজনার ব্যবহার করে) আপনি নিজের অ্যাকশনবারড্রওয়ারটিগল দিয়ে আবার সেটড্রাওয়ারলিস্টনারকে কল করে নেভিড্রাওয়ারটি পুনরায় চালু করতে পারেন।
স্ট্রেয়া

24
    mActionBarDrawerToggle = mNavigationDrawerFragment.getActionBarDrawerToggle();
    mActionBarDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // event when click home button
        }
    });

মাইকেসে এই কোডটি নিখুঁতভাবে কাজ করে


আপনি সত্যিই দুর্দান্ত, এটি কাজ করেছে, আমি কখনই ভাবিনি যে আমি ড্রয়ারটগলের মাধ্যমে টুলবারের পিছনের বোতামটি হ্যান্ডেল করতে পারব ..
সায়ে

অ্যাকশনবারড্রওয়ারটগল.সেটটুলনাভিগেশন ক্লিকলিস্টনার কাজ করার জন্য প্রথমে এটিকে কল করতে হবে: এমএ্যাকশনবারড্রিজটোগল.সেটহোম এএসপিআইডিফিকেশন (আর.ড্রেব্যাবল.মেনু_আইকন); mActionBarDrawerToggle.setDrawerIndicatorEnabled (মিথ্যা); এবং ক্লিক ইভেন্টগুলি নিজে পরিচালনা করুন। (ক্লিক ক্লিক করুন খুলুন / বন্ধ ড্রয়ার)
লুিকি

9

এইভাবে আমি সঠিক খণ্ডে ফিরে আসার জন্য এটি করব অন্যথায় যদি আপনার একই স্তরে কয়েকটি টুকরো থাকে তবে এটি যদি আপনি সরঞ্জামদণ্ডের পিছনে বোতামের আচরণটি ওভাররাইড না করে তবে এটি প্রথমটিতে ফিরে আসবে।

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();
        }
    });

আমাদের কি কোটলিনে "ওভাররাইড" ক্লিক করার পদ্ধতি আছে?
আখিলা মাদারী

@ আখিলামাদারি কোটলিনে এরকম কিছু চেষ্টা করুন: টুল টুলবার = সন্ধান ভিউআইআইডি (আর.আইডি.টুলবার) টুলবার সেটসপুপারএকশনবার (টুলবার) টুলবার.সেটনাভিশনঅনক্লিকলাইজার {/ * আপনি কিছু চান * / সমাপ্ত ()}
মার্কোস

3

আমি মনে করি সমর্থন লাইব্রেরি 21 সহ সঠিক সমাধানটি নিম্নলিখিত

// action_bar is def resource of appcompat; 
// if you have not provided your own toolbar I mean  
Toolbar toolbar = (Toolbar) findViewById(R.id.action_bar);
if (toolbar != null) {
    // change home icon if you wish
    toolbar.setLogo(this.getResValues().homeIconDrawable());
    toolbar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //catch here title and home icon click                          
        }                       
    });                 
}

ইন this.getResValues().homeIconDrawable(), কে this?
লুইসকমস

এটি একটি ক্রিয়াকলাপ। গেটেরেসালুয়েসগুলি আমার পদ্ধতি, সুতরাং এটি এখানে প্রাসঙ্গিক নয়। সেটলগো একটি অঙ্কনযোগ্য সংস্থান আইডি গ্রহণ করে।
ćিকিć নেনাড

4
এটি পুরো টুলবারের যে কোনও স্থানেই ব্যবহারকারীদের ক্লিক পরিচালনা করতে পারে, আমি কী ভাবছিলাম সে সম্পর্কে এটি ভাববে না
মিনা ফাজি

1

আমি নেভিগেশন ড্রয়ারের মতো ফিরে এবং হোম বোতামটি পরিচালনা করেছি

public class HomeActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    private ActionBarDrawerToggle drawerToggle;
    private DrawerLayout drawerLayout;
    NavigationView navigationView;
    private Context context;

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

        setContentView(R.layout.activity_home);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        resetActionBar();

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

        //showing first fragment on Start
        getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).replace(R.id.content_fragment, new FirstFragment()).commit();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //listener for home
        if(id==android.R.id.home)
        {  
            if (getSupportFragmentManager().getBackStackEntryCount() > 0)
                onBackPressed();
            else
                drawerLayout.openDrawer(navigationView);
            return  true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onBackPressed() {
       if (drawerLayout.isDrawerOpen(GravityCompat.START)) 
            drawerLayout.closeDrawer(GravityCompat.START);
       else 
            super.onBackPressed();
    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Begin the transaction

        Fragment fragment = null;
        // Handle navigation view item clicks here.
        int id = item.getItemId();
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (id == R.id.nav_companies_list) {
            fragment = new FirstFragment();
            // Handle the action
        } 


        // Begin the transaction
        if(fragment!=null){

            if(item.isChecked()){
                if(getSupportFragmentManager().getBackStackEntryCount()==0){
                    drawer.closeDrawers();
            }else{
                    removeAllFragments();
                    getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE).replace(R.id.WikiCompany, fragment).commit();
                    drawer.closeDrawer(GravityCompat.START);
                }

            }else{
                removeAllFragments();
                getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE).replace(R.id.WikiCompany, fragment).commit();
                drawer.closeDrawer(GravityCompat.START);
            }
        }

        return true;
    }

    public void removeAllFragments(){
        getSupportFragmentManager().popBackStackImmediate(null,
                FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }

    public void replaceFragment(final Fragment fragment) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                .replace(R.id.WikiCompany, fragment).addToBackStack("")
                .commit();
    }


    public void updateDrawerIcon() {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                try {
                    Log.i("", "BackStackCount: " + getSupportFragmentManager().getBackStackEntryCount());
                    if (getSupportFragmentManager().getBackStackEntryCount() > 0)
                        drawerToggle.setDrawerIndicatorEnabled(false);
                    else
                        drawerToggle.setDrawerIndicatorEnabled(true);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }, 50);
    }

    public void resetActionBar()
    {
        //display home
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
    }

    public void setActionBarTitle(String title) {
        getSupportActionBar().setTitle(title);
    }
}

এবং প্রতিটি onViewCreatedআমি কল

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ((HomeActivity)getActivity()).updateDrawerIcon();
    ((HomeActivity) getActivity()).setActionBarTitle("List");
}

0

এইভাবেই আমি এটি প্রাক-উপাদান নকশা বাস্তবায়িত করেছি এবং মনে হয় এখনও কাজ করে আমি নতুনটিতে স্যুইচ করেছি Toolbar। আমার ক্ষেত্রে আমি ব্যবহারকারী লগ ইন করতে চাইছি যদি তারা লগ আউট করার সময় পাশের নাভি খোলার চেষ্টা করে, (এবং ইভেন্টটি ধরুন যাতে পাশের নাভ খুলবে না)। আপনার ক্ষেত্রে আপনি পারেন না return true;

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (!isLoggedIn() && item.getItemId() == android.R.id.home) {
        login();
        return true;
    }
    return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
}

আহ আমি ভুলে গেছি আমি আবিষ্কার করেছি যে আমি কোনও খণ্ডে হোম বোতামের ক্লিকটি ধরতে অক্ষম ছিলাম, আমি এখানে একটি প্রশ্ন জিজ্ঞাসা করেছি এবং এমন এক কর্মক্ষেত্রের প্রস্তাব দিয়েছিলাম যা আপনাকে সমস্ত টুকরো টুকরো করে নিজেই ইভেন্টটি পাস করতে পারে। stackoverflow.com/q/21938419/1007151
darnmason

0

ইভেন্টগুলি পেতে এবং গ্রাহ্য করতে এবং ইভেন্টে সক্ষম হবার জন্য আমি ড্রয়ারলআউটকে কিছুটা পরিবর্তন করেছি, যেমন আপনি যদি বিশদ দৃশ্যে উপস্থিত হন তবে অ্যাকশনটগলকে ফিরে হিসাবে ব্যবহার করতে চাইলে:

public class ListenableDrawerLayout extends DrawerLayout {

    private OnToggleButtonClickedListener mOnToggleButtonClickedListener;
    private boolean mManualCall;

    public ListenableDrawerLayout(Context context) {
        super(context);
    }

    public ListenableDrawerLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ListenableDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    /**
     * Sets the listener for the toggle button
     *
     * @param mOnToggleButtonClickedListener
     */
    public void setOnToggleButtonClickedListener(OnToggleButtonClickedListener mOnToggleButtonClickedListener) {
        this.mOnToggleButtonClickedListener = mOnToggleButtonClickedListener;
    }

    /**
     * Opens the navigation drawer manually from code<br>
     * <b>NOTE: </b>Use this function instead of the normal openDrawer method
     *
     * @param drawerView
     */
    public void openDrawerManual(View drawerView) {
        mManualCall = true;
        openDrawer(drawerView);
    }

    /**
     * Closes the navigation drawer manually from code<br>
     * <b>NOTE: </b>Use this function instead of the normal closeDrawer method
     *
     * @param drawerView
     */
    public void closeDrawerManual(View drawerView) {
        mManualCall = true;
        closeDrawer(drawerView);
    }


    @Override
    public void openDrawer(View drawerView) {

        // Check for listener and for not manual open
        if (!mManualCall && mOnToggleButtonClickedListener != null) {

            // Notify the listener and behave on its reaction
            if (mOnToggleButtonClickedListener.toggleOpenDrawer()) {
                return;
            }

        }
        // Manual call done
        mManualCall = false;

        // Let the drawer layout to its stuff
        super.openDrawer(drawerView);
    }

    @Override
    public void closeDrawer(View drawerView) {

        // Check for listener and for not manual close
        if (!mManualCall && mOnToggleButtonClickedListener != null) {

            // Notify the listener and behave on its reaction
            if (mOnToggleButtonClickedListener.toggleCloseDrawer()) {
                return;
            }

        }
        // Manual call done
        mManualCall = false;

        // Let the drawer layout to its stuff
        super.closeDrawer(drawerView);
    }

    /**
     * Interface for toggle button callbacks
     */
    public static interface OnToggleButtonClickedListener {

        /**
         * The ActionBarDrawerToggle has been pressed in order to open the drawer
         *
         * @return true if we want to consume the event, false if we want the normal behaviour
         */
        public boolean toggleOpenDrawer();

        /**
         * The ActionBarDrawerToggle has been pressed in order to close the drawer
         *
         * @return true if we want to consume the event, false if we want the normal behaviour
         */
        public boolean toggleCloseDrawer();
    }

}

0

হোম আইকনটি একটি পরিচিত আইকনে পরিবর্তন করা এবং আঁকতে সক্ষমগুলির তুলনা করা আমরা সবচেয়ে সহজ পদ্ধতির মাধ্যমে করতে পারি (কারণ android.R.id.home আইকন বিভিন্ন এপিআই সংস্করণে পৃথক হতে পারে

সুতরাং অ্যাকশনবার সেটসপোর্টঅ্যাকশনবার (_ টোলবার) হিসাবে একটি সরঞ্জামদণ্ড সেট করুন;

_toolbar.NavigationIcon = your_known_drawable_here;

   for (int i = 0; i < _toolbar.ChildCount; i++)
            {
                View v = _toolbar.GetChildAt(i);
                if (v is ImageButton)
                {
                    ImageButton imageButton = v as ImageButton;

                    if (imageButton.Drawable.GetConstantState().Equals(_bookMarkIcon.GetConstantState()))
                    {
                       //here v is the widget that contains the home  icon you can add your click events here 
                    }
                }
            }

0

আমার ক্ষেত্রে আমাকে আইকনটি ব্যবহার করে রেখেছিলেন:

toolbar.setNavigationIcon(R.drawable.ic_my_home);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);

এবং তারপরে ডিফল্টঅ্যাপশনস আইটেমসিলেক্টেড এবং অ্যান্ড্রয়েড.আর.ড.হোম আইডি সহ ইভেন্টগুলিতে ক্লিক করতে শুনুন


1
এটি কাজ করবে না। android.R.id.homeকখনই গুলি চালায় না
ট্রান্সার

0

যে কেউ যামারিন বাস্তবায়ন সন্ধান করছে (যেহেতু ঘটনাগুলি সি # তে ভিন্নভাবে করা হয়), আমি কেবল এই NavClickHandlerক্লাসটি নিম্নলিখিত হিসাবে তৈরি করেছি :

public class NavClickHandler : Java.Lang.Object, View.IOnClickListener
{
    private Activity mActivity;
    public NavClickHandler(Activity activity)
    {
        this.mActivity = activity;
    }
    public void OnClick(View v)
    {
        DrawerLayout drawer = (DrawerLayout)mActivity.FindViewById(Resource.Id.drawer_layout);
        if (drawer.IsDrawerOpen(GravityCompat.Start))
        {
            drawer.CloseDrawer(GravityCompat.Start);
        }
        else
        {
            drawer.OpenDrawer(GravityCompat.Start);
        }
    }
}

তারপরে, এইভাবে একটি কাস্টম হ্যামবার্গার মেনু বোতাম বরাদ্দ করা হয়েছে:

        SupportActionBar.SetDisplayHomeAsUpEnabled(true);
        SupportActionBar.SetDefaultDisplayHomeAsUpEnabled(false);
        this.drawerToggle.DrawerIndicatorEnabled = false;
        this.drawerToggle.SetHomeAsUpIndicator(Resource.Drawable.MenuButton);

এবং অবশেষে, ড্রয়ার মেনু টগলারের জন্য আমি আগে তৈরি করা ক্লাসের ধরণের একটি সরঞ্জামদণ্ড নেভিগেশনক্লিকলিস্টার নিয়োগ করে:

        this.drawerToggle.ToolbarNavigationClickListener = new NavClickHandler(this);

এবং তারপরে ক্লিক ইভেন্টগুলি হ্যান্ডেল সহ আপনি একটি কাস্টম মেনু বোতাম পেয়েছেন।


0

এই কোড ব্যবহার করে দেখুন

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if(id == android.R.id.home){
        //You can get 
    }
    return super.onOptionsItemSelected(item);
}

আপনার অনক্রিয়েট () মেটোডে নীচে কোড যুক্ত করুন

ActionBar ab = getSupportActionBar();
    ab.setDisplayHomeAsUpEnabled(true);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.