ในการเปิดใช้ปุ่มย้อนกลับของ 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