হোম বোতামের জন্য অ্যাকশন বারের অনক্লিক শ্রোতা


85

onClickListenerঅ্যাকশন বারের হোম বোতামের জন্য আমি কীভাবে একটি কাস্টম বাস্তবায়ন করতে পারি ?

আমি ইতিমধ্যে একটি কাজ করেছি getSupportActionBar().setDisplayHomeAsUpEnabled(true);এবং এখন হোম বোতামটি ক্লিক করার ক্ষেত্রে আমি ব্যবহারকারীকে একটি নির্দিষ্ট ক্রিয়াকলাপে পুনর্নির্দেশ করতে চাই।

আমি চেষ্টা করেছিলাম:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            item.setOnMenuItemClickListener(new OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    Intent i = new Intent();
                    i.setClass(BestemmingActivity.this, StartActivity.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                    return true;
                }
            });
        default:
            return super.onOptionsItemSelected(item);
        }
    }

কিন্তু এটি কখনও প্রবেশ করে না onMenuItemClick

মূলত, এটি এই লিঙ্কটির মতোই সম্পন্ন হয়েছে তবে তবুও এটি শ্রোতার মধ্যে প্রবেশ করে না।

উত্তর:


113

অন্য কারও যদি সমাধানের প্রয়োজন হয়

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == android.R.id.home) {
        onBackPressed();  return true;
    }

    return super.onOptionsItemSelected(item);
}

এটি একটি সমাধান হতে হবে। দুর্দান্ত উত্তর
জেমসাবন

4
আমার সাথে কাজ করেছেনreturn true;
রিক

4
ব্লকের return true;শেষে একটি রাখুন if, তারপরে এটি সঠিক
androidguy

4
এই পদ্ধতিটি তীর আইকন সহ হোম / পিছনে বোতামটির জন্য কাজ করছে না।
ট্রান্সার

111

আমি অ্যাকশনবারশারলকটি ব্যবহার করি , আমরা সেট করার পরে আমরা supportActionBar.setHomeButtonEnabled(true);
onMenuItemSelected পদ্ধতিতে ওভাররাইড করতে পারি:

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {

    int itemId = item.getItemId();
    switch (itemId) {
    case android.R.id.home:
        toggle();

        // Toast.makeText(this, "home pressed", Toast.LENGTH_LONG).show();
        break;

    }

    return true;
}

আমি আশা করি আপনার জন্য এই কাজটি শুভকামনা


4
আমাকে কাজ করে না। মেনু আইটেমসিলিটকে এটির চূড়ান্ত হিসাবে ওভাররাইড করতে পারে না।
অরিত্র রায়

অ্যান্ড্রয়েড টীকাগুলি দিয়ে কেবল @ অপশনস আইটেম (অ্যান্ড্রয়েড.আর.ইড.হোম) ব্যবহার করুন আপনার মেথড () {}
ইটালো বোর্সাত্তো

23

যদি আমরা সিস্টেম প্রদত্ত অ্যাকশন বারটি ব্যবহার করি তাহলে কোডটি কার্যকর হয়

getActionBar().setHomeButtonEnabled(true);

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {

    int itemId = item.getItemId();
    switch (itemId) {
    case android.R.id.home:
      //do your action here.
        break;

    }

    return true;
}

7

স্থির: একটি ব্যবহার করার প্রয়োজন নেই setOnMenuItemClickListener। কেবল বোতাম টিপুন, এটি উদ্দেশ্যটির মাধ্যমে ক্রিয়াকলাপটি তৈরি করে এবং প্রবর্তন করে।

আপনার সহায়তার জন্য সবাইকে অনেক ধন্যবাদ!


ঠিক আছে, অ্যাকশন বারটি মেনু শ্রোতাদের এবং onOptionsItemSelected()স্বয়ংক্রিয়ভাবে কলগুলির যত্ন নেয় । ম্যানুয়ালি ইনস্টল করার দরকার নেই (এটি আসলে জিনিসগুলি ভেঙে দিতে পারে)।
নিকোলে এলেনকভ

5

কি ঘটছে তার অর্ধেক অংশে উত্তরগুলি। যদি onOptionsItemSelectedনা নিয়ন্ত্রণ homeAsUpবাটন manifest.xml সিস্টেমের মধ্যে পিতা বা মাতা কার্যকলাপ সেট পিতা বা মাতা কার্যকলাপ যায় না। ক্রিয়াকলাপ ট্যাগে এটির মতো ব্যবহার করুন:

<activity ... >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.activities.MainActivity" /> 
</activity>

3

আইসিএসে চলতে থাকলে আপনাকে স্পষ্টভাবে হোম অ্যাকশনটি সক্ষম করতে হবে। ডক্স থেকে :

দ্রষ্টব্য: আপনি যদি বাড়ির ক্রিয়াকলাপটিতে নেভিগেট করতে আইকনটি ব্যবহার করেন তবে অ্যান্ড্রয়েড 4.0.০ (এপিআই স্তর ১৪) দিয়ে শুরু হওয়া সতর্ক থাকুন, আপনাকে অবশ্যই সেট হোম হট বাটনেবল (সত্য) কল করে পূর্ববর্তী সংস্করণগুলিতে আইকনটি অ্যাকশন আইটেম হিসাবে স্পষ্টভাবে সক্ষম করতে হবে আইকনটি ডিফল্টরূপে অ্যাকশন আইটেম হিসাবে সক্ষম হয়েছিল)।


4
আমি ইতিমধ্যে একটি getSupportActionBar().setDisplayHomeAsUpEnabled(true);এবং একটিgetSupportActionBar().setHomeButtonEnabled(true);
নোলম্যান


-4

আপনার নিজের ওভাররাইড অন্টিভিশন আইটেমসিলিট করা উচিত এবং আপনার onCreateOptionsMenu এই কোড দিয়ে প্রতিলিপি করা উচিত

@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_action_bar_finish_order_stop, menu);
        menu.getItem(0).setOnMenuItemClickListener(new FinishOrderStopListener(this, getApplication(), selectedChild));
        return true;

    }

4
শুধুমাত্র কোড সহ উত্তর সম্পর্কে স্ট্যাকওভারফ্লো নীতিগুলি পড়তে এবং যেতে (ফিরে?) লোকদের বুঝতে সাহায্য করার জন্য দয়া করে কিছু ব্যাখ্যা যুক্ত করুন।
N0un
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.