অ্যান্ড্রয়েড - শিরোনাম বারের পিছনে বোতাম


110

অনেকগুলি অ্যাপ্লিকেশনে (ক্যালেন্ডার, ড্রাইভ, প্লে স্টোর) আপনি যখন একটি বোতামটি ট্যাপ করেন এবং একটি নতুন ক্রিয়াকলাপ প্রবেশ করেন, শিরোনাম বারের আইকনটি একটি পিছনের বোতামে রূপান্তরিত করে, তবে আমি যে অ্যাপটিটি তৈরি করছি তার জন্য এটি তা করে না। কীভাবে আমি সেই আইকনটি আপনাকে আগের স্ক্রিনে ফিরিয়ে আনব?


অনক্রিয়াট উদাহরণে এখানে সাপোর্ট
কোড স্পাই

উত্তর:


145

শিরোনাম বারে একটি ফিরে বোতাম তৈরি করতে দুটি সহজ পদক্ষেপ রয়েছে:

প্রথমে, ক্রিয়াকলাপে যার শিরোনাম বারটিতে আপনি পিছনের বোতামটি রাখতে চান তাতে নিম্নলিখিত কোডটি ব্যবহার করে অ্যাপ্লিকেশন আইকনটিকে ক্লিকযোগ্য করে তুলুন:

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

আপনি উপরের কোডটি যুক্ত করার পরে, আপনি অ্যাপ্লিকেশন আইকনটির বাম দিকে একটি পিছনের তীর প্রদর্শিত হবে।

এখানে চিত্র বর্ণনা লিখুন

দ্বিতীয়ত, আপনি উপরের কাজটি করার পরে, আপনাকে এখনও এমন কোড তৈরি করতে হবে যা ক্লিক ইভেন্টটির সুবিধা নেবে। এটি করার জন্য, সচেতন হন যে যখন আপনি আসলে অ্যাপ্লিকেশন আইকনে ক্লিক করেন, তখন একটি onOptionsItemSelectedপদ্ধতি বলা হয়। পূর্ববর্তী ক্রিয়াকলাপে ফিরে যেতে, আপনার কার্যকলাপে সেই পদ্ধতিটি যুক্ত করুন এবং এতে Intentকোড দিন যা আপনাকে পূর্ববর্তী ক্রিয়াকলাপে ফিরিয়ে আনবে। উদাহরণস্বরূপ, আসুন আমরা যে ক্রিয়াকলাপটিতে ফিরে যেতে চাইছেন তাকে বলা হয় MyActivity। এটিতে ফিরে যেতে, পদ্ধতিটি নিম্নলিখিতভাবে লিখুন:

public boolean onOptionsItemSelected(MenuItem item){
    Intent myIntent = new Intent(getApplicationContext(), MyActivity.class);
    startActivityForResult(myIntent, 0);
    return true;
}

এটাই!

(অ্যান্ড্রয়েড বিকাশকারী এপিআই-তে, এটি ম্যানিফেস্টের সাথে ঘোরাঘুরি এবং এই জাতীয় জিনিস যুক্ত করার পরামর্শ android:parentActivityNameদেয় But তবে এটি আমার পক্ষে কাজ করে না বলে মনে হয়। উপরেরটি সহজ এবং আরও নির্ভরযোগ্য))

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

এবং আপনার ক্রিয়াকলাপে

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

23
আপনি ভালভাবে ব্যাখ্যা করেছেন কিন্তু যদি আপনার অপশন আইটেমসিলেক্টে ভুল না হয় তবে আপনার কেবল ফিনিস () বলা উচিত; আপনার ক্ষেত্রে স্টার্টঅ্যাক্টিভিটি ফর রিসাল্ট দ্বিতীয় ক্রিয়াকলাপ শুরু করবে এবং আপনি যখন দ্বিতীয় ক্রিয়াকলাপ থেকে পিছনে চাপবেন তখন আপনাকে প্রথম ক্রিয়াকলাপে ফিরিয়ে দেওয়া হবে (যেখানে আপনি চাপানো অ্যাকশন বারের আইকন)
ইয়াহিয়া আরশাদ

8
তদুপরি, আপনার আইটেম.জেটআইটেম আইডি () যদি অ্যান্ড্রয়েড.আর.আইডি.হোম হয় তবেই তা করা উচিত
বিটেক

2
যেমন AS বলেছেন: "মেথড অলোকেশন 'অ্যাকশনবার.সেটডিসপ্লাইহোমসঅ্যাপ্পেনড (সত্য)' java.lang.
নালপয়েন্টার এক্সসেপশন

1
সতর্কবাণী! একটি টুলবার অ্যাকশনবারের সাহায্যে ক্র্যাশ হয়ে শূন্য হয়। নীচে উত্তর দেখুন।
কুলমাইন্ড

5
getActionBar () আমার পক্ষে কাজ করে নি, অ্যাপ্লিকেশন কেবল ক্র্যাশ হয়েছে। getSupportActionBar () কাজ করেছে।
জন কেটজিক

60

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

 @Override
 public void onCreate(Bundle savedInstanceState) {
    ...
   getActionBar().setDisplayHomeAsUpEnabled(true);
 } 

এর পরে onOptionsItemSelectedপদ্ধতিতে এই কোডটি লিখুন

  int id = item.getItemId();

     if (id==android.R.id.home) {
        finish();
    }

1
getActionBar()আমাকে একটি নাল দেয়; তুমি কি জানো কেন?
msysmilu

3
< ": windowActionBar Android" আইটেমের নাম => মিথ্যা </ আইটেমটি> <আইটেমের নাম = "অ্যান্ড্রয়েড windowNoTitle"> সত্য </ আইটেমটি> কারণ ActionBar যেমন শৈলী সঙ্গে নয়
পল Verest

46

আমি অবশেষে অ্যাকশনবার / সরঞ্জামদণ্ডে ব্যাক বাটনটি সঠিকভাবে যুক্ত করতে পরিচালিত করেছি

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}  

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

    return super.onOptionsItemSelected(item);
}

public boolean onCreateOptionsMenu(Menu menu) {
    return true;
}

3
এটিই আমার পক্ষে একমাত্র উত্তর works ধন্যবাদ @ লুসিফায়ার
আর্দা Çebi

2
একই। আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ।
মারিয়া

একই। অন্য উত্তরগুলির কোনওটিই কাজ করে না। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
এল সুশিবোই

18

1.- অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে ক্রিয়াকলাপটি যুক্ত করুন এবং মেটা-ডেটা সরবরাহ করার বিষয়টি নিশ্চিত করুন:

<activity
    android:name="com.example.myfirstapp.DisplayMessageActivity"
    android:label="@string/title_activity_display_message"
    android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myfirstapp.MainActivity" />
</activity>

২- ক্রিয়াকলাপের অনক্রিট পদ্ধতিতে নিম্নলিখিত কোডটি যুক্ত করুন:

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(true);
} 

৩.- ওপশনশৈলীগুলি নির্বাচিত ওভাররাইড করুন এবং স্ট্যাকটি নিক্ষেপ করতে NavUtils.navigateUpFromSameTask () স্থির পদ্ধতি ব্যবহার করুন।

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

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


NavUtils প্রবর্তনের জন্য ধন্যবাদ!
অ্যান্টস্যাক

10

যদি আপনার কার্যকলাপ ক্রিয়াকলাপ প্রসারিত করে extend

public class YourActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xxx);

        getActionBar().setHomeButtonEnabled(true);

        [...]
    }

    [...]
}

যদি আপনার ক্রিয়াটি অ্যাপকম্প্যাটঅ্যাক্টিভিটি প্রসারিত করে

public class YourActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_xxx);

            getSupportActionBar().setHomeButtonEnabled(true);

            [...]
        }

        [...]
    }

আর কিছু করার নেই, অ্যাড আপ ক্রিয়া দেখুন

[বিকল্প] পিতামাতার ক্রিয়াকলাপটি স্পষ্টভাবে সংজ্ঞায়িত করতে আপনার ম্যানিফেস্ট.এক্সএমএলকে এটি পরিবর্তন করুন:

<application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.YourActivity "
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

পিতামাতার কার্যকলাপ উল্লেখ করুন দেখুন Spec


1
এই আমি ঠিক খুঁজছিলাম ছিল। আপনি আমার দিন বাঁচিয়েছেন। অনেক ধন্যবাদ.
তাশি ডেন্ডআপ

6

যদি আপনার ক্রিয়াকলাপ প্রসারিত হয় তবে AppCompatActivityআপনাকে এ জাতীয় onSupportNavigateUp()পদ্ধতিটিকে ওভাররাইড করতে হবে :

public class SecondActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_second);
       Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
       setSupportActionBar(toolbar);
       getSupportActionBar().setHomeButtonEnabled(true);
       getSupportActionBar().setDisplayHomeAsUpEnabled(true);
       ...
   }

   @Override
   public void onBackPressed() {
       super.onBackPressed();
       this.finish();
   }

   @Override
   public boolean onSupportNavigateUp() {
       onBackPressed();
       return true;
   }
}

আপনার onBackPressed()পদ্ধতিতে আপনার যুক্তি পরিচালনা করুন এবং কেবল সেই পদ্ধতিতে কল onSupportNavigateUp()করুন যাতে ফোনের পিছনের বোতামটি এবং সরঞ্জামদণ্ডের তীরটি একই কাজ করে।


6

সবার আগে অনক্রিয়েট ফাংশনে নিম্নলিখিত লাইনটি যুক্ত করুন

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

এবং তারপরে কোডটিতে নিম্নলিখিত ফাংশনটি যুক্ত করুন:

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

        return super.onOptionsItemSelected(item);
    }

6

প্রথমে আপনাকে এই কোডগুলি লিখতে হবে

@Override
    protected void onCreate(Bundle savedInstanceState) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

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

 <activity android:name=".MainActivity"
            android:parentActivityName=".PreviousActivity"></activity>

আমি মনে করি এটি কার্যকর হবে


5

যদি আপনি অ্যান্ড্রয়েড স্টুডিওতে 5.1 এর জন্য নতুন সমর্থন লাইব্রেরিটি ব্যবহার করে থাকেন তবে আপনি এটির পরিবর্তে এটি আপনার অ্যাপকম্প্যাটঅ্যাক্টিভিটিতে ব্যবহার করতে পারেন

 ActionBar actionBar = getSupportActionBar();
 actionBar.setHomeButtonEnabled(true);
 actionBar.setDisplayHomeAsUpEnabled(true);
 actionBar.setHomeAsUpIndicator(R.mipmap.ic_arrow_back_white_24dp);
 actionBar.setDisplayShowHomeEnabled(true);

চিয়ার্স।


5

গুগল হিসাবে সহজ উপায় এবং সর্বোত্তম অনুশীলন এখানে ব্যাখ্যা করেছে :

1. আপনার সন্তানের কার্যকলাপের জন্য পিতামাতাকে এতে যুক্ত করুন AndroidManifest.xml:

<activity 
        android:name=".ChildActivity"
        android:parentActivityName=".ParentActivity" >
</activity>

2. আপনার সন্তানের পিছনে বোতামটি সক্রিয় করুনঅ্যাক্টিভিটি:

myActionOrActionSupportBar.setDisplayHomeAsUpEnabled(true);

আমার জন্য কাজ করেছেন, আমি আশা করি এটি আপনার পক্ষেও কাজ করে।


এটি কেবলমাত্র বৈধ যদি ক্রিয়াকলাপে কেবলমাত্র একটি পিতামাতার ক্রিয়াকলাপ থাকতে পারে। এটাই আমার ক্ষেত্রে। +1
এমিকিউডার

আমার ক্ষেত্রে দ্বিতীয় পদক্ষেপের প্রয়োজন ছিল না।
থোমিও

5

একটি গুণমানের পরে আমি খুঁজে পেয়েছি, থিম বিকল্পটি আমার কোডের প্রধান সমস্যা এবং নিম্নলিখিতটি আমার জন্য সরঞ্জামদণ্ডটি প্রদর্শন করার সঠিক উপায়

অ্যান্ড্রয়েডমেনিস্ট ফাইলটিতে প্রথমে আপনাকে আপনার থিমের স্টাইল পরিবর্তন করতে হবে

Theme.AppCompat.Light.DarkActionBar
to 
Theme.AppCompat.Light.NoActionBar

তারপরে আপনার ক্রিয়াকলাপের এক্সএমএলে আপনাকে নিজের নিজস্ব সরঞ্জামদণ্ডের মতো কল করতে হবে

<androidx.appcompat.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        android:id="@+id/toolbar"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:elevation="4dp"/>

এবং তারপরে আপনার এই জাভা ফাইলটিতে এই সরঞ্জামদণ্ডটি কল করা উচিত

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

এবং সরঞ্জামদণ্ড দেখানোর জন্য ইউকে নালপয়েন্টারএক্সসেপশন এড়ানোর জন্য নালটি পরীক্ষা করা উচিত

if(getSupportActionBar() != null){
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

হোম ক্রিয়াকলাপের জন্য এটি আবার যুক্ত করুন

@Override
public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId()==android.R.id.home) {
            finish();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

অথবা আপনার পছন্দসই ক্রিয়াকলাপের জন্য

public boolean onOptionsItemSelected(MenuItem item){
    Intent myIntent = new Intent(getApplicationContext(), YourActivity.class);
    startActivityForResult(myIntent, 0);
    return true;
}

3

আমি অনেক জটিল উত্তর দেখেছি, তাই এটি আমার কোড। এখানে কাজ করতেছি. আপনি দুটি উপায়ে এটি অর্জন করতে পারেন।

1) স্টারার্ড অ্যান্ড্রয়েডের সামঞ্জস্যতা

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.NavUtils;

import android.view.MenuItem;
import android.view.View;

public class EditDiscoveryActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_discovery);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        /*toolbar.setNavigationIcon(R.drawable.ic_arrow_white_24dp);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });*/
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

}

2) একটি কাস্টম আইকন ব্যবহার করুন

আপনি যদি মন্তব্যে কোড ব্যবহার করতে চান তবে আপনাকে কেবল এই ফাইলটি অঙ্কনযোগ্য হিসাবে যুক্ত করতে হবে, যাকে বলা হয় আইস_আর_এইচাইট_৪dp.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="#ffffff"
        android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
    </vector>

এই কোড সহ।

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

আশা করি এটি এখানে কিছু লোককে সহায়তা করবে!


2

হালকা ওজনযুক্ত সংস্করণটি ব্যবহার না করে ActionBarActivityএখনও এখানে একই বাহাওয়ার রয়েছে:

public class ToolbarConfigurer implements View.OnClickListener {
    private Activity activity;

    public ToolbarConfigurer(Activity activity, Toolbar toolbar, boolean displayHomeAsUpEnabled) {
        toolbar.setTitle((this.activity = activity).getTitle());
        if (!displayHomeAsUpEnabled) return;
        toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
        toolbar.setNavigationOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        NavUtils.navigateUpFromSameTask(activity);
    }
}

ব্যবহার: রাখুন new ToolbarConfigurer(this, (Toolbar) findViewById(R.id.my_awesome_toolbar), true);মধ্যে onCreate


সমর্থন লাইব্রেরিতে অন্তর্ভুক্ত থাকা নতুন টুলবার উইজেটের সাথে এটি ফিট করে। ধন্যবাদ !!
ক্লোকার

2

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

<activity android:name=".SearchActivity">

</activity>

তারপরে নিম্নলিখিত তিনটি লাইনের কোড যুক্ত করুন।

<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.raqib.instadate.MainActivity" />

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

        Toolbar toolbar = (Toolbar) findViewById(R.id.searchToolbar);
    setSupportActionBar(toolbar);
    try{
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }catch(NullPointerException e){
       Log.e("SearchActivity Toolbar", "You have got a NULL POINTER EXCEPTION");
    }

এইভাবেই আমি সমস্যার সমাধান করেছি। ধন্যবাদ।


2

অন্যান্য উত্তরগুলি উল্লেখ করে না যে আপনি এটি আপনার Toolbarউইজেটের এক্সএমএলে সেট করতে পারেন :

app:navigationIcon="?attr/homeAsUpIndicator"

উদাহরণ স্বরূপ:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:navigationIcon="?attr/homeAsUpIndicator"
    app:popupTheme="@style/AppTheme.PopupOverlay"
    app:title="@string/title_activity_acoustic_progress" />

2

2020 এ আপনাকে যা করতে হবে তা:
(আপনি মূল কার্যকলাপে ফিরে যেতে চান তা বিবেচনা করে)

protected void onCreate(Bundle savedInstanceState){
    ...
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

public boolean onOptionsItemSelected(MenuItem item) {
    Intent myIntent = new Intent(getApplicationContext(), MainActivity.class);
    startActivityForResult(myIntent, 0);
    return true;
}

এটি আকর্ষণীয়, তবে আপনি ধরে নিচ্ছেন যে আমরা মেইনএ্যাকটিভিটিতে ফিরে যেতে চাই। আপনি কীভাবে আগের কোনও ক্রিয়াকলাপে পুনর্নির্দেশ করবেন?
মায়িড

1

আপনি একটি ActionBar ব্যবহার করে থাকেন এই ডকুমেন্টেশন আপ পড়তে চান যাচ্ছেন http://developer.android.com/reference/android/app/ActionBar.html#setDisplayHomeAsUpEnabled(boolean)

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


1

এটি অ্যাপ্লিকেশন ম্যানিফেস্টে পিতামাতার ক্রিয়াকলাপ নির্দিষ্ট করে কোড ছাড়াও করা যেতে পারে আপনি যদি ক্রিয়াকলাপ বি তে একটি পিছনের বোতাম চান যা ক্রিয়াকলটি এ হবে, কেবল ম্যানিফেস্টে ক্রিয়াকলাপ বি এর পিতামাতার হিসাবে ক্রিয়াকলাপ এ যুক্ত করুন।



1

আমার সঠিক উত্তর পেতে আমার কয়েকটি উত্তর মিশ্রিত করা দরকার কারণ আমার অ্যাপটিতে 3 টি ক্রিয়াকলাপ রয়েছে যা যে কোনও সময় যেতে পারে এবং ফিরে আসতে পারে। ক্রিয়াকলাপ 1> কার্যকলাপ 2> ক্রিয়াকলাপ 3। যখন আমি আমার ক্রিয়াকলাপ 3 এ কিছু করছিলাম, তখন পিছনের বোতামটি ক্রিয়াকলাপ 2 তে সঠিকভাবে ব্যাক করছিল। তবে, অ্যাক্টিভিটি 2 থেকে finish(), এটি ব্যবহার করে , এটি ক্রিয়াকলাপ 3-এ নয়, ক্রিয়াকলাপ 1-তে সমর্থন করে। এবং আমি AppCompatActivity প্রসারিত করছি। সুতরাং, আমার সমাধানটি ছিল:

public class Activity2 extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...

            getSupportActionBar().setHomeButtonEnabled(true);
        }
    }

AndroidManLive.xML এ:

<activity android:name=".activities.Activity2"
           android:parentActivityName="com.example.appname.activities.Activity1">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.appname.activities.Activity1" />
        </activity>

এবং পরিশেষে, আমার মেনুতে অ্যাকশন বোতাম (অ্যাকশনবার):

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            ...

            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;

        }

        return super.onOptionsItemSelected(item);

    }

NavUtils.navigateUpFromSameTask(this);পরিবর্তে আমার জন্য কাজ করে finish()


1

কেবল এমন কিছু ভাগ করে নেওয়া যা আমাকে সহায়তা করেছিল এবং অন্যের জন্য দরকারী হতে পারে। যদিও এখানে বেশিরভাগ উত্তর সঠিক, তবে ব্যবহার করে getActionBar().setDisplayHomeAsUpEnabled(true);, এটি আমার পক্ষে কাজ করে নি। আমার যে সমস্যাটি ছিল তা হ'ল আমি ম্যানুয়ালি দ্বিতীয় ক্রিয়াকলাপ তৈরি করার চেষ্টা করছি তবে এর সাথে আরও বিশদ জড়িত রয়েছে।
আমার স্টুডিওর নিজের সরঞ্জামগুলি ব্যবহার করে দ্বিতীয় ক্রিয়াকলাপ তৈরি করার জন্য অ্যান্ড্রয়েড বিকাশকারীদের টিউটোরিয়াল ( https://developer.android.com/training/basics/firstapp/starting-activity ) অনুসরণ করে আমার সমস্যার কী সমাধান হয়েছিল :

Create the second activity
1. In the Project window, right-click the app folder and select New > Activity > Empty Activity.
2. In the Configure Activity window, enter "DisplayMessageActivity" for Activity Name and click Finish (leave all other properties set to the defaults).
Android Studio automatically does three things:
- Creates the DisplayMessageActivity file.
- Creates the corresponding activity_display_message.xml layout file.
- Adds the required <activity> element in AndroidManifest.xml.

0

আপনি সহজেই onBackPressed()আপনার অনক্লিক শ্রোতাদের মধ্যে রাখতে পারেন। এটি আপনার বোতামটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে ডিফল্ট "ব্যাক / আপ" বোতামগুলির মতো কাজ করে!


0
Toolbar toolbar=findViewById(R.id.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

if (getSupportActionBar()==null){
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==android.R.id.home)
    finish();
return super.onOptionsItemSelected(item);
}

0

এটি আমার জন্য কাজ করছে .. ধরুন দুটি ক্রিয়াকলাপ রয়েছে (ক্রিয়াকলাপ, কার্যকলাপ)

ক্রিয়াকলাপের ভিতরে দুটি এই কোডটি ব্যবহার করুন

@Override
protected void onCreate(Bundle savedInstanceState) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

ক্রিয়াকলাপে

//when you need to go second activity
startActivity(new Intent(Activityone.this, Activitytwo.class));

এটি মেনিফেস্ট ফাইলের মধ্যে দ্বিতীয় ক্রিয়াকলাপের মধ্যে অন্তর্ভুক্ত করা উচিত

<activity android:name=".Activitytwo"
        android:parentActivityName=".Activityone"></activity>

এবং ফলাফলটি এরকম হবে

এখানে চিত্র বর্ণনা লিখুন


0
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.YourxmlFileName);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

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

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

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