ในการเปิดใช้ปุ่มย้อนกลับของ ActionBar คุณจะต้องมี ActionBar ในกิจกรรมของคุณ ชุดนี้ถูกกำหนดโดยชุดรูปแบบที่คุณใช้ AndroidManfiest.xmlคุณสามารถตั้งค่ารูปแบบสำหรับกิจกรรมของคุณใน หากคุณใช้เช่น@android:style/Theme.NoTitleBarชุดรูปแบบคุณไม่มี ActionBar ในกรณีนี้การเรียกเพื่อgetActionBar()ส่งคืนค่าว่าง ดังนั้นตรวจสอบให้แน่ใจว่าคุณมี ActionBar ก่อน
ขั้นตอนต่อไปคือการตั้งค่าเป็นandroid:parentActivityNameกิจกรรมที่คุณต้องการนำทางหากคุณกดปุ่มย้อนกลับ สิ่งนี้ควรทำในเวลาAndroidManifest.xmlเดียวกัน
ตอนนี้คุณสามารถเปิดใช้งานปุ่มย้อนกลับในonCreateวิธีการของกิจกรรม "ลูก" ของคุณ
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
ตอนนี้คุณควรใช้ตรรกะสำหรับปุ่มย้อนกลับ คุณเพียงแค่แทนที่onOptionsItemSelectedวิธีการใน "เด็ก" android.R.id.homeของคุณกิจกรรมและตรวจสอบรหัสของปุ่มย้อนกลับซึ่งเป็น
ตอนนี้คุณสามารถใช้วิธีการได้NavUtils.navigateUpFromSameTask(this); แต่ถ้าคุณไม่ได้ระบุandroid:parentActivityNameในตัวคุณAndroidManifest.xmlสิ่งนี้จะทำให้แอปของคุณเสียหาย
บางครั้งนี่คือสิ่งที่คุณต้องการเพราะเตือนให้คุณลืมว่า "บางสิ่ง" ดังนั้นหากคุณต้องการป้องกันสิ่งนี้คุณสามารถตรวจสอบว่ากิจกรรมของคุณมีผู้ปกครองใช้getParentActivityIntent()วิธีนี้หรือไม่ ถ้าสิ่งนี้ส่งคืนค่า null คุณไม่ได้ระบุพาเรนต์
ในกรณีนี้คุณสามารถใช้onBackPressed()วิธีการที่คล้ายกับว่าผู้ใช้กดปุ่มย้อนกลับบนอุปกรณ์ การใช้งานที่ดีซึ่งไม่เคยเกิดปัญหาแอปของคุณคือ:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getParentActivityIntent() == null) {
Log.i(TAG, "You have forgotten to specify the parentActivityName in the AndroidManifest!");
onBackPressed();
} else {
NavUtils.navigateUpFromSameTask(this);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
กรุณาแจ้งให้ทราบว่าภาพเคลื่อนไหวที่ผู้ใช้จะเห็นความแตกต่างกันระหว่างและNavUtils.navigateUpFromSameTask(this);onBackPressed()
มันขึ้นอยู่กับคุณว่าคุณไปทางไหน แต่ฉันคิดว่าวิธีแก้ปัญหามีประโยชน์โดยเฉพาะอย่างยิ่งถ้าคุณใช้คลาสฐานสำหรับกิจกรรมทั้งหมดของคุณ
getActionBar().setDisplayHomeAsUpEnabled(true);ในบนสร้างและswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}ในonOptionsItemSelected? ทั้งใน ServicesViewActivity