অ্যান্ড্রয়েড সরঞ্জামদণ্ডে বিভিন্ন টুকরো জন্য মেনু আইটেম যুক্ত করা হয়


90

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

মেনু_টুলবার:

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item android:id="@+id/edit"
    android:orderInCategory="1"
    android:title="Edit"
    app:showAsAction="always"
    android:icon="@drawable/pencil_icon"/>
<item android:id="@+id/add"
    android:orderInCategory="1"
    android:title="Add"
    app:showAsAction="always"
    android:icon="@drawable/plus_icon"/>

সরঞ্জামদণ্ড:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="#10a1ff"
android:title="Home"
/>

উত্তর:


168

আপনার টুকরাগুলিতে অনুরূপ কোড যুক্ত করুন:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
{
    View v = inflater.inflate(R.layout.library_fragment, parent, false);
    setHasOptionsMenu(true);
    return v;
}


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

এইভাবে আপনি আপনার টুকরো জন্য মেনু কাস্টমাইজ করতে পারেন।


19
এটি সঠিক উত্তর, কারণ খণ্ডে কল করার জন্য onCreateOptionsMenu পদ্ধতির জন্য সেটহ্যাসঅপশনস মেনু (সত্য) এ কল করা প্রয়োজন।
জন স্লাভিক

15
কলিং সম্পর্কে মনে রাখুন menu.clear()মধ্যে onCreateOptionsMenuঅন্যথায় আপনাকে অভিভাবক থেকে মেনু উত্তরাধিকারী করব, খুব -।
ডার্ট দেগা

@ ডার্টডেগা যেখানে আমি কোডটি সাফ করার জন্য রেখেছি? খণ্ড বা ক্রিয়াকলাপ স্যার, আমি আমার খণ্ডে
মেন্যুটিম

এটি 28 স্তরের এপিআই দিয়ে কাজ করে? আমি এখনও মূল ক্রিয়াকলাপগুলির মেনু আইটেমগুলি দেখতে পাই
আর্দেনদেব

33

এই মেনুটি পরিবর্তনশীল তৈরি করার পদ্ধতি হল: http://www.101apps.co.za/index.php/articles/using-toolbars-in-your-apps.html

সম্পাদিত:

Toolbar actionBarToolBar = (Toolbar) findViewById(R.id.my_toobar);
setSupportActionBar(actionBarToolBar);
actionBarToolBar.setNavigationIcon(R.drawable.icon);
actionBarToolBar.setNavigationContextDescription(getResources().getString(R.string.desc);
actionBarToolBar.setLogo(R.drawable.other_icon);
actionBarToolBar.setLogoDescription(getResources().getString(R.string.other_desc);
actionBarToolBar.inflateMenu(R.menu.fragment_menu);

4
actionBarToolbar.setOnMenuItemClickListener()মেনু আইটেম ক্রিয়া পরিচালনা করতে ব্যবহার করুন । onOptionsItemSelected()এই পরিস্থিতিতে ডাকা হয় না।
লাহিরু চান্দিমা

4
প্রদত্ত লিঙ্কটি আর নেই
আশ্বিন সোলঙ্কি

25

এটি করার সর্বোত্তম উপায়:

1. ক্রিয়াকলাপে সরঞ্জামদণ্ডটি সন্ধান করুন এবং এটি সমর্থনঅ্যাকশনবার হিসাবে সেট করুন।

Toolbar actionBarToolBar = (Toolbar) findViewById(R.id.my_toobar);
setSupportActionBar(actionBarToolBar);

২. তবে একই ক্রিয়াকলাপের বিভিন্ন অংশে বিকল্প মেনুগুলি হ্যান্ডেল করার জন্য এটি কেকের টুকরো হবে। প্রতিটি খণ্ডে নিম্নলিখিত জিনিসগুলি যেমনটি চান তেমন করুন:

অনক্রিয়েটভিউ মেথড কলটিতে

setHasOptionsMenu(true);

এবং সর্বশেষে,

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

এবং মেনু আইটেম ক্লিক ক্লিক পরিচালনা করার জন্য, আমাদের অন্পশন আইটেম নির্বাচন করা রয়েছে:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_search :
            Log.i("item id ", item.getItemId() + "");
        default:
            return super.onOptionsItemSelected(item);
    }
}

4
#HasOptionsMenu (সত্য) সত্যিই সহায়ক! ধন্যবাদ ইউ
জে.ড্রেগন

10

onCreateOptionsMenuআপনার প্রতিটি খণ্ডে ওভাররাইড পদ্ধতি।

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

@ জোইগি আপনি বিভিন্ন টুলবারটি কেন চান? আপনি বিভিন্ন শিরোনাম এবং মেনু সেট করতে পারেন।
এলি জোউ

@ জোইগি হ্যাঁ, আপনি কাস্টম মেনু এক্সএমএল স্ফীত করে কাস্টম মেনু পেতে পারেন। কল setTitle()শিরোনাম যুক্ত করতে পারে।
এলি জৌ

: @JoeEigi আপনি ভুল প্রসঙ্গ আছে, এই একটি চেহারা আছে মনে হয় stackoverflow.com/questions/26998455/...
অ্যালেন চ্যান

4
আমি আমার ম্যানিফেস্টে অ্যাকশনবারটি বন্ধ করে দিয়েছি, তবে এখনও আমার সরঞ্জাম ক্রিয়াকলাপটি সরঞ্জামদণ্ডের উপরে দেখায়। আমি কীভাবে এ থেকে মুক্তি পাব
জো ইজি

হ্যাঁ, এটি করেছেন এবং এখনও আমার লেআউটে প্রদর্শিত হয়েছে তবে
দৃশ্যটির


4

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    mRootView = inflater.inflate(R.layout.fragment_order_history, container, false);
    //getActivity().invalidateOptionsMenu();


    setHasOptionsMenu(true);

    return mRootView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.main, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

হ্যাঁ আমি মেনুটি সঠিকভাবে দেখিয়েছি। তবে এই মেনুটিকে খণ্ডের নিকটে কীভাবে আড়াল করবেন, তার অর্থ আমি যখন অন্য একটি খণ্ডে স্যুইচ করি যেমন একটি -> বি থেকে, খণ্ডের সরঞ্জামদণ্ডে এখনও দৃশ্যমান মেনু।
জিশান আহমেদ

খণ্ড খ এর onCreateView এ setHasOptionsMenu (মিথ্যা) ব্যবহার করুন।
কান্নান_জেজেডি 8'17

4

আমারও একই সমস্যা ছিল এবং আমি সেই টুকরোগুলি মেনুটি তারপরে প্রদর্শিত টুকরা অনুযায়ী প্রতিস্থাপন করতে চাইছিলাম।

আমি এখন যে সমস্যার মুখোমুখি হচ্ছি তা হ'ল মেনুটি আগেরটির সাথে যুক্ত করা হয়েছিল।

খণ্ডটির জন্য কেবল মেনুটি প্রদর্শনের জন্য, আমি প্রস্তাব দিই:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
     menu.clear(); //Empty the old menu
     inflater.inflate(R.menu.menu_fragment1, menu);
     super.onCreateOptionsMenu(menu, inflater);
}

আশা করি এটি সাহায্য করবে


4
কেবলমাত্র ক্লিয়ার ()
ম্যাপোকে

2

নীচে বিভিন্ন টুকরো সহ বিভিন্ন মেনু বিকল্প দেখানোর পদক্ষেপ রয়েছে।

পদক্ষেপ 1: কল সেটহ্যাসঅপশনস মেনু (সত্য)

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        setHasOptionsMenu(true)
        super.onViewCreated(view, savedInstanceState)

    }

পদক্ষেপ 2: আপনার খণ্ড সম্পর্কিত বিকল্প মেনু আইটেম স্ফীত।

override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
    // To clear previously added menu items
    menu?.clear()
    inflater?.inflate(R.menu.your_fragment_menu, menu)
    super.onCreateOptionsMenu(menu, inflater)
}

এটি আমার নতুন মেনুতে প্রদর্শিত অযাচিত মেনু বোতামটি সরাতে আমাকে সহায়তা করেছিল
ইম ব্যাটম্যান

1

এক্সএমএলের ভিতরে এই লাইনটি যুক্ত করুন

app:menu="@menu/main_menu"

4
আসলে আপনি ঠিক বলেছেন! আপনি এটি এক্সএমএল দ্বারা এবং তারপরে খণ্ডে নির্দিষ্ট করতে পারবেন: iew `` ওভাররাইড মজা অনভিউ তৈরি করা (দেখুন: সেভডআইনস্ট্যান্সস্টেট: বান্ডেল?)। সুপার.ওনভিউক্রিয়েটড (দেখুন, সেভেনস্ট্যান্সেট স্টেট) টুলবার.সেট নেভিগেশনঅনল্লিকলিস্টার {ক্রিয়াকলাপ (.অনব্যাকপ্রেস)। toolBar.menu.findItem (R.id.action_search) SearchView searchView.setOnQueryTextListener যেমন .actionView (এই)} ``
user3193413

0

নতুন ম্যাটারিয়ালটুলবার ব্যবহার করে একটি ওভারফ্লো মেনু তৈরি করা খুব সহজ and

<com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="0dp"
        android:layout_height="?attr/actionBarSize"
        app:navigationIcon="@drawable/ic_menu"
        app:menu="@menu/main_menu"/>

এবং তারপরে অনক্লিক শ্রোতাদের সেট করতে কোডটিতে কেবল এটি যুক্ত করুন:

toolbar.setOnMenuItemClickListener {
            // .. DO SOMETHING HERE
            false
        }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.