2015-12-11 24 views
6

Tôi đang phát xung quanh với Android Studio vì vậy tôi đã tạo một SettingsActivity bằng thuật sĩ và tôi gặp phải sự cố không thể điều hướng từ hoạt động cài đặt này trở lại hoạt động chính bằng cách sử dụng "lên" mũi tên trong thanh tác vụ.Điều hướng trở lại từ hoạt động cài đặt

Các thiết lập của Actionbar trông như thế này:

private void setupActionBar() { 
    ActionBar actionBar = getSupportActionBar(); 
    if (actionBar != null) { 
     // Show the Up button in the action bar. 
     actionBar.setDisplayShowHomeEnabled(true); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
} 

Actionbar không phải là null btw.
Và parentActitvityName được thiết lập trong AndroidManifest:

<activity 
     android:name=".SettingsActivity" 
     android:label="@string/title_activity_settings" 
     android:parentActivityName=".MainActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.demo.app.MainActivity" /> 
</activity> 

Tuy nhiên, một nhấp chuột vào mũi tên không có gì. Ngay cả onOptionsItemSelected cũng được kích hoạt.

Có vẻ như đây chính xác là vấn đề tương tự Action bar setDisplayHomeAsUpEnabled not working on ICS nhưng điều hướng trở lại từ chi tiết đến hoạt động tổng quan đang hoạt động tốt trong cùng một ứng dụng. Hơn nữa tôi đặt MinSDK đến 15 và TargetSDK đến 23.

Trả lời

16

override phương pháp onOptionsItemSelected trên hoạt động của bạn và làm cho nó như

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

Phương thức này không được gọi trên hoạt động cài đặt chính. – Daniel

+0

bạn có thể ghi đè phương thức. Bằng cách này tôi sẽ chỉnh sửa câu trả lời của tôi, sao chép và dán nó vào hoạt động của bạn –

+0

yep, đây là những gì tôi đã có nhưng khi tôi bấm vào "lên" phương pháp này không được gọi. – Daniel

2

Vspallas câu trả lời này là đúng. Sai lầm ở bên cạnh tôi. Tôi đã có một phương thức onOptionsItemSelected bên trong preferencesFragment, không phải trong Activity. Mea culpa.

+1

Bạn có thể gọi hàm getActivity(). OnBackPressed() từ bên trong đoạn, để có cùng tác dụng. – ravindu1024

Các vấn đề liên quan