Android - ปุ่มย้อนกลับในแถบชื่อเรื่อง


113

ในหลาย ๆ แอพ (ปฏิทิน, ไดรฟ์, Play Store) เมื่อคุณแตะปุ่มและเข้าสู่กิจกรรมใหม่ไอคอนในแถบชื่อเรื่องจะเปลี่ยนเป็นปุ่มย้อนกลับ แต่สำหรับแอปที่ฉันกำลังสร้างนั้นจะไม่ทำเช่นนั้น ฉันจะทำให้ไอคอนนั้นนำคุณกลับไปที่หน้าจอก่อนหน้าได้อย่างไร


ลอง getSupportActionBar () ในตัวอย่าง OnCreate ที่นี่freakyjolly.com/how-to-add-back-arrow-in-android-activity
Code Spy

คำตอบ:


146

มีสองขั้นตอนง่ายๆในการสร้างปุ่มย้อนกลับในแถบหัวเรื่อง:

ขั้นแรกทำให้ไอคอนแอปพลิเคชันสามารถคลิกได้โดยใช้รหัสต่อไปนี้ในกิจกรรมที่มีแถบหัวเรื่องที่คุณต้องการให้มีปุ่มย้อนกลับ:

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;
}

แค่นั้นแหละ!

(ใน API นักพัฒนา Android แนะนำให้ยุ่งกับไฟล์ Manifest และเพิ่มสิ่งต่างๆเช่นandroid:parentActivityNameแต่ดูเหมือนจะไม่ได้ผลสำหรับฉันข้างต้นง่ายกว่าและเชื่อถือได้มากกว่า)

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

และในกิจกรรมของคุณ

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

23
คุณอธิบายได้ดี แต่ถ้าไม่ผิดใน onOptionItemSelected ของคุณคุณควรเรียกว่าเสร็จสิ้น (); ในกรณีของคุณ startActivityForResult จะเปิดกิจกรรมที่สองและเมื่อคุณจะกดกลับจากกิจกรรมที่สองคุณจะถูกส่งกลับไปที่กิจกรรมแรก (โดยที่คุณกดไอคอนแถบการกระทำ)
Yahya Arshad

8
ยิ่งไปกว่านั้นคุณควรทำเช่นนั้นก็ต่อเมื่อ item.getItemId () เป็น android.R.id.home
bitek

2
ตามที่ระบุ: "วิธีการเรียกใช้ 'actionBar.setDisplayHomeAsUpEnabled (true)' อาจสร้าง java.lang.NullPointerException"
statosdotcom

1
คำเตือน! ด้วย ToolBar actionBar จะส่งกลับค่า null พร้อมข้อขัดข้อง ดูคำตอบด้านล่าง
CoolMind

5
getActionBar () ใช้งานไม่ได้สำหรับฉันแอพขัดข้อง getSupportActionBar () ได้ผล
john ktejik

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
เนื่องจากไม่มี ActionBar เช่นมี style <item name = "android: windowActionBar"> false </item> <item name = "android: windowNoTitle"> จริง </item>
Paul Verest

49

ในที่สุดฉันก็สามารถเพิ่มปุ่มย้อนกลับไปยังแถบการกระทำ / แถบเครื่องมือได้อย่างถูกต้อง

@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
นี่เป็นคำตอบเดียวที่เหมาะกับฉัน ขอบคุณ @LucyFair
Arda Çebi

2
เหมือนกัน. ขอบคุณสำหรับคำตอบ.
Maria

เหมือนกัน. คำตอบอื่น ๆ ไม่ได้ผล นี่น่าจะเป็นคำตอบที่ยอมรับได้
El Sushiboi

18

1.- เพิ่มกิจกรรมลงใน AndroidManifest.xml และตรวจสอบให้แน่ใจว่าได้ระบุข้อมูลเมตา:

<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>

2.- เพิ่มรหัสต่อไปนี้ในวิธีการ onCreate ของกิจกรรม:

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

3.- แทนที่ onOptionsItemSelected และใช้ 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);
}

อย่างไรก็ตามการใช้ navUpFromSameTask () จะเหมาะสมก็ต่อเมื่อแอปของคุณเป็นเจ้าของงานปัจจุบัน (นั่นคือผู้ใช้เริ่มงานนี้จากแอปของคุณ) หากไม่เป็นความจริงและกิจกรรมของคุณเริ่มต้นในงานที่เป็นของแอพอื่นการไปที่ขึ้นควรสร้างงานใหม่ที่เป็นของแอพของคุณซึ่งคุณต้องสร้างแบ็กสแตกใหม่


ขอขอบคุณที่แนะนำ NavUtils!
AntonSack

10

หากกิจกรรมของคุณขยายกิจกรรม

public class YourActivity extends Activity {

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

        getActionBar().setHomeButtonEnabled(true);

        [...]
    }

    [...]
}

หากการกระทำของคุณขยาย AppCompatActivity

public class YourActivity extends AppCompatActivity {

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

            getSupportActionBar().setHomeButtonEnabled(true);

            [...]
        }

        [...]
    }

ไม่มีอะไรต้องทำเพิ่มเติมดูเพิ่มการดำเนินการ

[ไม่บังคับ] หากต้องการกำหนดกิจกรรมหลักอย่างชัดเจนให้แก้ไข Manifest.xml ของคุณดังนี้:

<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>

โปรดดูระบุกิจกรรมหลัก


1
นี่คือสิ่งที่ฉันกำลังมองหา คุณช่วยวันของฉัน ขอบคุณมาก.
Tashi Dendup

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

ก่อนอื่นในฟังก์ชัน onCreate ให้เพิ่มบรรทัดต่อไปนี้

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);
    }

จากนั้นเพิ่มบรรทัดนี้ในไฟล์ Manifest

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

ฉันคิดว่ามันจะได้ผล


5

หากคุณใช้ไลบรารีการสนับสนุนใหม่สำหรับ 5.1 ใน android studio คุณสามารถใช้สิ่งนี้บน AppCompatActivity แทนได้

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

ไชโย


5

วิธีที่ง่ายที่สุดและแนวทางปฏิบัติที่ดีที่สุดตามที่ Google อธิบายไว้ที่นี่ :

1. เพิ่มผู้ปกครองให้กับบุตรหลานของคุณกิจกรรมในAndroidManifest.xml:

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

2. เปิดใช้งานปุ่มย้อนกลับในบุตรหลานของคุณกิจกรรม:

myActionOrActionSupportBar.setDisplayHomeAsUpEnabled(true);

ทำงานให้ฉันฉันหวังว่ามันจะเหมาะกับคุณเช่นกัน


จะใช้ได้เฉพาะในกรณีที่กิจกรรมสามารถมีกิจกรรมหลักได้เพียงกิจกรรมเดียว นั่นคือกรณีสำหรับฉัน +1
MQoder

ขั้นตอนที่ 2 ไม่จำเป็นในกรณีของฉัน
Thomio

5

หลังจากช่วงเวลาที่มีคุณภาพที่ฉันพบตัวเลือกธีมเป็นปัญหาหลักในโค้ดของฉันและต่อไปนี้เป็นวิธีที่เหมาะสมในการแสดงแถบเครื่องมือสำหรับฉัน

ในไฟล์ AndroidManifest ก่อนอื่นคุณต้องเปลี่ยนรูปแบบธีมของคุณ

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

จากนั้นที่ xml กิจกรรมของคุณคุณต้องเรียก Toolbar ของคุณเองเช่น

<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"/>

จากนั้นแถบเครื่องมือนี้ควรถูกเรียกในไฟล์ Java ของคุณโดย

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

และสำหรับแถบเครื่องมือที่แสดง U ควรตรวจสอบค่าว่างเพื่อหลีกเลี่ยง NullPointerException

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) ความเข้ากันได้ของ Android Stardard

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) ใช้ไอคอนที่กำหนดเอง

หากคุณต้องการใช้โค้ดในความคิดเห็นคุณต้องเพิ่มไฟล์นี้ในรูปวาดที่เรียกว่า ic_arrow_white_24dp.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


สิ่งนี้เข้ากับวิดเจ็ต Toolbar ใหม่ที่รวมอยู่ในไลบรารีการสนับสนุน ขอบคุณ !!
Clocker

2

คุณต้องเพิ่มรหัสที่กล่าวถึงด้านล่างในไฟล์รายการ ค้นหากิจกรรมที่คุณต้องการเพิ่มฟังก์ชันลูกศรย้อนกลับ หากคุณพบสิ่งที่ดีหรือสร้างกิจกรรม

<activity android:name=".SearchActivity">

</activity>

จากนั้นเพิ่มโค้ดสามบรรทัดต่อไปนี้ระหว่าง

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

และอย่าลืมเพิ่มโค้ดส่วนนี้ใน onCreate (); วิธีการของกิจกรรมเฉพาะของคุณที่คุณต้องการลูกศรย้อนกลับ

        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

คำตอบอื่น ๆ ไม่ได้ระบุว่าคุณสามารถตั้งค่านี้ใน XML ของ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:
(หากคุณต้องการกลับไปที่ MainActivity)

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;
}

นั่นน่าสนใจ แต่คุณสมมติว่าเราต้องการกลับไปที่ MainActivity คุณจะเปลี่ยนเส้นทางไปยังกิจกรรมก่อนหน้านี้อย่างไร
mayid

1

หากคุณใช้ ActionBar คุณจะต้องการอ่านเอกสารนี้ http://developer.android.com/reference/android/app/ActionBar.html#setDisplayHomeAsUpEnabled(boolean)

จากนั้นคุณต้องเขียนทับเมธอด onOptionsItemSelected (MenuItem) และมองหาเหตุการณ์ android.R.id.home ที่จะเข้ามาจากนั้นคุณจะรู้ว่าผู้ใช้คลิกที่ปุ่มย้อนกลับนั้นบนแถบการกระทำ


1

นอกจากนี้ยังสามารถทำได้โดยไม่ต้องใช้รหัสโดยระบุกิจกรรมหลักในรายการแอปหากคุณต้องการปุ่มย้อนกลับในกิจกรรม B ซึ่งจะไปที่กิจกรรม A เพียงเพิ่มกิจกรรม A เป็นแม่ของกิจกรรม B ในรายการ



1

ฉันต้องผสมคำตอบเพื่อให้ได้คำตอบที่ถูกต้องเพราะแอปของฉันมีกิจกรรม 3 อย่างที่สามารถย้อนกลับได้ตลอดเวลา กิจกรรม 1> กิจกรรม 2> กิจกรรม 3. เมื่อฉันทำบางอย่างใน activity3 ปุ่มย้อนกลับกำลังสำรองข้อมูลไปยัง Activity2 อย่างถูกต้อง อย่างไรก็ตามจาก Activity2 โดยใช้finish()มันกลับไปที่ Activity3 ไม่ใช่ Activity1 และฉันกำลังขยาย AppCompatActivity ดังนั้นวิธีแก้ปัญหาของฉันคือ:

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

            getSupportActionBar().setHomeButtonEnabled(true);
        }
    }

บน AndroidManifest.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);นี้ไม่ได้ผลสำหรับฉัน ปัญหาที่ฉันพบคือฉันพยายามสร้างกิจกรรมที่สองด้วยตนเอง แต่มีรายละเอียดเพิ่มเติมที่เกี่ยวข้อง
สิ่งที่ช่วยแก้ปัญหาของฉันได้จริงๆคือทำตามบทช่วยสอนนักพัฒนา Android ( https://developer.android.com/training/basics/firstapp/starting-activity ) สำหรับการสร้างกิจกรรมที่สองโดยใช้เครื่องมือของ Android Studio:

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()ฟัง onClick ของคุณได้ สิ่งนี้ทำให้ปุ่มของคุณทำหน้าที่เหมือนปุ่ม "สำรองข้อมูล" เริ่มต้นในแอป Android!


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

สิ่งนี้ใช้ได้ผลสำหรับฉัน .. สมมติว่ามีสองกิจกรรม (Activityone, Activitytwo)

ภายในกิจกรรมสองใช้รหัสนี้

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

บน Activityone

//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.