অ্যান্ড্রয়েডে ব্যাক বোতামটি অক্ষম করুন


334

অ্যাপ্লিকেশন লগ আউট করার সময় অ্যান্ড্রয়েডে ব্যাক বোতামটি কীভাবে অক্ষম করবেন?


1
আপনি এই প্রশ্নে আরও পরিষ্কার হতে পারেন? আপনি যদি পিছনের বোতামের ডিফল্ট আচরণটি ওভাররাইটিংয়ের সন্ধান করছেন তবে এই প্রশ্নটি এখানে উল্লেখ করুন। stackoverflow.com/questions/2000102/…
গোপীনাথ

26
যদি আপনার কোনও ভাল কারণ না থাকে তবে দয়া করে এটি করবেন না, কারণ অপারেশনটির প্রত্যাশিত মডেলটি ভাঙা পুরো প্ল্যাটফর্মটিকে খুব সামান্য আঘাত করে
হামি

14
আপনি যদি এটি করতে চান তবে আপনাকে যদি নির্বোধ স্যামসাং এস 4 এর সাথে ডিল করতে হয় যেখানে ফোনের প্রান্তে পেছনের বোতামটি স্পর্শকাতর (শারীরিক নয়), যা ইতিমধ্যে সংবেদনশীল যাতে স্পর্শকাতর একটি স্পর্শের পাশের অংশের পাশে থাকবে ফিরে যাও.
রসিকান

1
এটি অ্যান্ড্রয়েড গুণমান এবং ডিজাইন গাইডের ভূমিকা, ইউএক্স-এন 1 এর বিরুদ্ধে।
মিগুয়েলস্লভ

উত্তর:


651

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

@Override
public void onBackPressed() {
   if (shouldAllowBack()) {
       super.onBackPressed();
   } else {
       doSomething();
   }
}

12
কী হ্যান্ডলিংয়ের পদ্ধতিগুলি ওভাররাইড করার চেয়ে এটি অনেক ভাল এবং পরিষ্কার এবং একই প্রভাব রয়েছে। দুর্দান্ত উত্তর!
নিক রেইমান

2
দারুন সলিউশন ডুড। হোম বোতাম দিয়ে এইভাবে করার কোনও উপায় আছে?
দত্ত কুণ্ডে

1
এটা অসাধারণ! অন্য কোনও ক্রিয়াকলাপ থেকে ফিরে টিপে যখন আমি আসলে আমার মূল ক্রিয়াকলাপে ফিরে যেতে চেয়েছিলাম এবং এই পদ্ধতিটি ওভাররাইড করা আমাকে খুব সহজেই তা করতে দেয়।
জিম

ওফ আমি সুপার.অনব্যাকপ্রেসড () সরিয়ে ফেলা ভুলে গেছি।
অ্যারিস্টো মাইকেল 14

173

উচ্চতর এপিআই লেভেল ২.০ এবং এর থেকে বেশি খুঁজছেন তবে এটি দুর্দান্ত কাজ করবে

@Override
public void onBackPressed() {
    // Do Here what ever you want do on back press;
}

অ্যান্ড্রয়েড এপিআই স্তরের সন্ধান করতে থাকলে 1.6 পর্যন্ত।

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
     //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
     return true;
     }
     return super.onKeyDown(keyCode, event);    
}

ব্যাক বোতাম টিপে রোধ করতে আপনার ক্রিয়াকলাপে উপরের কোডটি লিখুন


5
অনব্যাক্রেসড এপিআই স্তরের প্রয়োজনীয়তার কারণে অনব্যাক্রেসড ব্যবহারের চেয়ে এই পদ্ধতিটি আরও পিছনের দিকে সামঞ্জস্যপূর্ণ
অ্যান্ড্রুপিকে

5
দুর্দান্ত উত্তর। যদিও আমার প্রকল্পের জন্য আমার এটির প্রয়োজন নেই, আমি আপনাকে কৃতজ্ঞ যে আপনি পুরানো এবং নতুন দুটি পদ্ধতিই সরবরাহ করেছেন provided এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত। +1
জিম

1
@ জাভানেটর দ্বিতীয়টি আমার পক্ষে কাজ করবে না (উদাহরণস্বরূপ এপিআই স্তরের 16 এর জন্য), তবে প্রথমটি একটি
কবজির

38

আপনি এই সহজ উপায়ে করতে পারেন সুপার.নব্যাকপ্রেসড () কল করবেন না

দ্রষ্টব্য: - এটি করার দৃ strong় কারণ না থাকলে এবং এটি না করা পর্যন্ত।

@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}

6
"কেন নয়" এর একটি ব্যাখ্যা দুর্দান্ত হবে। ধন্যবাদ।
প্রায় একটি শিক্ষানবিশ

.সুপার কল না!
রান

3
@ এলমোস্টাবেজিনার কারণ সুপার কল না করা ব্যাক বোতামের স্বাভাবিক ব্যবহারকে অকার্যকর করে দেবে। ব্যবহারকারীরা যখন সাধারণভাবে কাজ করে যাওয়া বোতামটি কাজ বন্ধ করে দেয় তখন তারা ফ্রিক আউট করবে। তারা ভাবতে পারে অ্যাপটি বগি বা ফোনটি খারাপ হচ্ছে না ইত্যাদি হিসাবে আপনার অ্যাপটি শেষ পর্যন্ত অপরাধী হবে be
bengongon97


13

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

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_BACK)
        Toast.makeText(getApplicationContext(), "back press",      
     Toast.LENGTH_LONG).show();

    return false;
       // Disable back button..............
}

9

আপনি যদি নিশ্চিত করতে চান যে আপনার অ্যাক্টিভিটিটি মারা যাওয়ার আগে আপনার অ্যান্ড্রয়েড ক্লায়েন্ট অ্যাপ্লিকেশনটি কোনও সার্ভার থেকে লগ আউট হয়েছে -> তার নিজস্ব থ্রেডে কোনও পরিষেবা দিয়ে লগ আউট করুন (এটি যাইহোক আপনার করার কথা ছিল)।

পিছনের বোতামটি অক্ষম করা আপনার কোনও সমস্যার সমাধান করবে না। উদাহরণস্বরূপ যখন ব্যবহারকারী একটি ফোন কল পান আপনার তখনও একই সমস্যা থাকবে। যখন কোনও ফোন কল গৃহীত হয়, আপনার ক্রিয়াকলাপটি নেটওয়ার্ক থেকে একটি নির্ভরযোগ্য উত্তর পাওয়ার আগেই মারা যাওয়ার প্রায় সম্ভাবনা থাকে।

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


8

কেবলমাত্র অনব্যাকপ্রেসড () পদ্ধতিটি ওভাররাইড করুন এবং অনব্যাকপ্রেসড পদ্ধতি বা অন্যদের সুপার ক্লাসের কল করার দরকার নেই ..

@Override
public void onBackPressed()
{

}

অথবা আপনার বর্তমান ক্রিয়াকলাপটি অনব্যাকপ্রেসড () পদ্ধতিতে পাস করুন।

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

আপনার প্রয়োজনীয় ক্রিয়াকলাপটির নামটি আমার ক্রিয়াকলাপে প্রতিস্থাপন করুন।

আপনি যদি খণ্ডটি ব্যবহার করে থাকেন তবে প্রথমে কল করুন প্যারেন্টমথোড () পদ্ধতিটি

public void callParentMethod(){
    context.onBackPressed(); // instead of context use getActivity or something related
}

তারপরে খালি পদ্ধতিটি কল করুন

@Override
public void onBackPressed()
{

}

6

যদি আপনি ব্যবহার করছেন FragmentActivity। তারপরে এইভাবে কর

প্রথম এটি আপনার ভিতরে কল করুন Fragment

public void callParentMethod(){
    getActivity().onBackPressed();
}

এবং তারপরে onBackPressedআপনার পিতামাতার FragmentActivityক্লাসের পাশে কল করুন ।

@Override
public void onBackPressed() {
  //super.onBackPressed();
  //create a dialog to ask yes no question whether or not the user wants to exit
  ...
}

5

কেবল এই কোডটি ব্যবহার করে: আপনি ব্যাকপ্রেসড অক্ষম করতে চাইলে আপনি সুপার ব্যবহার করবেন না nঅনব্যাকপ্রেসড ();

@Override
public void onBackPressed() {

}

4

লগ আউট করার সময় আপনি যদি আপনার অ্যাপ্লিকেশনটি অক্ষম করতে চান তবে আপনি একটি বাতিল-অযোগ্য ডায়ালগ পপআপ করতে পারেন।


4

আপনি onBackPressed()আপনার ক্রিয়াকলাপে পদ্ধতিটিকে ওভাররাইড করতে পারেন এবং কলটি সুপার ক্লাসে সরাতে পারেন।

@Override
public void onBackPressed() {
  //remove call to the super class
  //super.onBackPressed();
}

3

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

@Override
public void onBackPressed() 
{
   // Your Code Here. Leave empty if you want nothing to happen on back press.
}

3

উপরের উত্তর থেকে এই দুটি পদ্ধতি গঠন করুন।

অনব্যাকপ্রেসড () (এপিআই স্তর 5, অ্যান্ড্রয়েড 2.0)

onKeyDown () (এপিআই স্তর 1, অ্যান্ড্রয়েড 1.0)

আপনি এটির dispatchKeyEvent()(এপিআই স্তর 1, অ্যান্ড্রয়েড 1.0) ওভাররাইড করতে পারেন ,

dispatchKeyEvent() (এপিআই স্তর 1, অ্যান্ড্রয়েড 1.0)

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.dispatchKeyEvent(event);
}


2

আমার জন্য কেবল ওভাররাইড করা onBackPressed()কাজ করেনি তবে স্পষ্টভাবে নির্দেশ করে যে কোন ক্রিয়াকলাপটি এটি ভালভাবে শুরু করা উচিত:

@Override
public void onBackPressed(){
  Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
  startActivity(intent);
}


1

দুর্দান্ত কাজ super.onBackPressed()থেকে অপসারণ public void onBackPressed()। এটি অ্যান্ড্রয়েড 9 এ পরীক্ষিত

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