ক্রিয়াকলাপে কীভাবে পিছনে বোতামটি পরিচালনা করতে হয়


136

কীভাবে কোনও ক্রিয়াকলাপের পিছনে বোতামটি পরিচালনা করতে হয়? আমার কিছু বোতাম আছে আমি যদি একটি বোতামে ক্লিক করি তবে এটি আমার যে বোতামগুলির প্রয়োজন তা পুনর্নির্দেশ করছে। এটি ঠিকঠাক কাজ করছে তবে আমি যখন পিছনে বোতাম টিপব তখন এটি শেষ হয়ে যায়।

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

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if ((keyCode == KeyEvent.KEYCODE_BACK)) 
    {
        return false; //I have tried here true also
    }
    return super.onKeyDown(keyCode, event);
}

আমি উপরের কোডটি ব্যাক হ্যান্ডেলটি ব্যবহার করার জন্য ব্যবহার করেছি তবে এটি কাজ করছে না। আমি যখন পিছনে বোতাম টিপুন তখন এটি নিজেই আঘাত হানে।

উত্তর:


326

আপনি এটির মতো এটি পরিচালনা করতে পারেন:

এপিআই লেভেল 5 এবং এর থেকেও বড় জন্য

@Override
public void onBackPressed() {
    // your code.
}

এপিআই 5 এর চেয়ে পুরানো

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // your code
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

6
টুকরো টুকরো সম্পর্কে কি?
ক্রাশম্যান 11'14

1
হ্যাঁ, কেউ কীভাবে কোনও টুকরোটি থেকে এটি করতে জানেন
জেমস ওয়েয়ারজবা

3
@ জেমস-ওয়েয়ারজবা ক্রিয়াকলাপ পরিচালনা করে এবং একটি খণ্ডে
প্রেরণা দেয়

19

উপরোক্ত পাশাপাশি আমি ব্যক্তিগতভাবে সুপারিশ

onKeyUp():

Programatically বলতে keydown তখন ব্যবহারকারী প্রাথমিকভাবে একটি কী depresses আগুন দেবেন কিন্তু এটা হবে যখন ব্যবহারকারী কী বিষণ্ণ রাখে পুনরাবৃত্তি করুন। *

এটি সমস্ত বিকাশ প্ল্যাটফর্মের ক্ষেত্রেই সত্য।

গুগল বিকাশ পরামর্শ দিয়েছে যে আপনি যদি একটি দৃশ্যে ব্যাক বোতামটি বাধা দিচ্ছেন তবে আপনার কীডাউন্টে স্টার্টট্রাকিং দিয়ে কী-এভেন্টটি ট্র্যাক করা উচিত এবং কি-আপের সাহায্যে আবেদন করা উচিত।

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {
        event.startTracking();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
            && !event.isCanceled()) {
        // *** Your Code ***
        return true;
    }
    return super.onKeyUp(keyCode, event);
}

15

হার্ডওয়্যার ডিভাইসের ব্যাক বাটন এবং সফট হোম (পিছনে) বোতাম উভয়ের জন্য যেমন "<-" এটি আমার পক্ষে কাজ করে। (* দ্রষ্টব্য আমার ক্রিয়াকলাপে একটি অ্যাপ বার / সরঞ্জামদণ্ড রয়েছে)

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            //finish();
            onBackPressed();
            break;
    }
    return true;
}



@Override
public void onBackPressed() {
   //Execute your code here
   finish();

}

চিয়ার্স!


আমি সমাপ্তি ব্যবহার করেছি এবং এটি আগের ক্রিয়াকলাপে ফিরে যায় না।
সি 8

2
"সমাপ্তি ()" কেবলমাত্র আপনার বর্তমান কার্যকলাপ বন্ধ করে। অভিপ্রায়টি ব্যবহার করে আপনাকে আপনার আগের ক্রিয়াকলাপে ফিরে যাওয়া পরিচালনা করতে হবে। বিটিডব্লিউ, আপনার আগের ক্রিয়াকলাপটি এখনও উন্মুক্ত হওয়া উচিত যদি আপনি এটি থেকে নেভিগেট করার সময় এটি "সমাপ্ত ()" না করেন।
এস ব্রুস

আমি কিছু পরীক্ষা করছি এবং আপনাকে আপডেট করব। উত্তরের জন্য ধন্যবাদ.
Si8


9

একটি সহজ পদ্ধতির হ'ল পিছনে বোতাম টিপুন এবং মুভিটাসটকটোকে (সত্য) কল করুন:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

অ্যান্ড্রয়েড ২.০ একটি নতুন অনব্যাকপ্রেসড পদ্ধতি এবং পিছনে বোতামটি কীভাবে পরিচালনা করবেন সে সম্পর্কে এই প্রস্তাবনাগুলি প্রবর্তন করে


9

আপনার ব্যবহার করা উচিত:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
            && keyCode == KeyEvent.KEYCODE_BACK
            && event.getRepeatCount() == 0) {
        // Take care of calling this method on earlier versions of
        // the platform where it doesn't exist.
        onBackPressed();
    }

    return super.onKeyDown(keyCode, event);
}

@Override
public void onBackPressed() {
    // This will be called either automatically for you on 2.0
    // or later, or by the code above on earlier versions of the
    // platform.
    return;
}

এখানে সংজ্ঞায়িত হিসাবে: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

আপনি যদি কোডটি সংকলন করতে কোনও পুরানো সংস্করণ ব্যবহার করছেন তবে অ্যান্ড্রয়েড.ওস.বিল্ড।


1

এটি আমাকে সাহায্য করেছে ..

@Override
public void onBackPressed() {
    startActivity(new Intent(currentActivity.this, LastActivity.class));
    finish();
}

বা ????? এমনকি আপনি এটি ড্রয়ার টগল করার জন্যও ব্যবহার করতে পারেন

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
        startActivity(new Intent(currentActivity.this, LastActivity.class));
    finish();

}

আমি আশা করি এটি আপনাকে সাহায্য করবে .. :)


1

এটি কিছু করার একটি সহজ উপায়।

    @Override
        public void onBackPressed() {
            // do what you want to do when the "back" button is pressed.
            startActivity(new Intent(Activity.this, MainActivity.class));
            finish();
        }

আমি মনে করি এটি সম্পর্কে আরও বিস্তৃত উপায় থাকতে পারে তবে আমি সরলতা পছন্দ করি। উদাহরণস্বরূপ, আমি অ্যাপ্লিকেশনটিকে সাইন আউট করার জন্য উপরের টেম্পলেটটি ব্যবহার করেছি এবং তারপরে আমার পছন্দের অন্য ক্রিয়াকলাপে ফিরে যেতে।

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