5

Tôi gặp sự cố với điều hướng hoạt động và tôi không thể tìm ra những gì tôi đang làm sai.Quay lại và điều hướng có kết quả khác nhau

Tôi có một số MainActivitySettingsActivity nhưng sử dụng BackUp (trên thanh hành động) có hai kết quả khác nhau từ Hoạt động cài đặt.

Ví dụ Nếu tôi nhấn nút Back tôi nhận được callbacks vòng đời sau trong MainActivity:

V/lifeCycle: onOptionsItemSelected 
V/lifeCycle: onPause 
V/lifeCycle: onSaveInstanceState-Bundle[..] 
V/lifeCycle: onStop 
<< PRESS BACK BUTTON >> 
V/lifeCycle: onRestart 
V/lifeCycle: onStart 
V/lifeCycle: onResume 
V/lifeCycle: onPostResume 

Trong khi nếu tôi bấm nút Navigate UP tôi nhận được những kết quả này:

V/lifeCycle: onOptionsItemSelected 
V/lifeCycle: onPause 
V/lifeCycle: onSaveInstanceState-Bundle[..] 
V/lifeCycle: onStop 
<< PRESS NAV UP >> 
V/lifeCycle: onDestroy // Problem 
V/lifeCycle: onCreate // Seems 
V/lifeCycle: onStart // Here 
V/lifeCycle: onResume 
V/lifeCycle: onPostResume 

Các vấn đề là khi tôi nhấn Nav UP hoạt động chính của tôi bị phá hủy và tái tạo nghĩa là tôi mất tất cả trạng thái xem của mình, nhưng nhấn nút quay lại không làm điều này.

Tôi không chắc chắn nếu đó là cách tôi bắt đầu PreferenceActivity:

Intent intent = new Intent(this, SettingsActivity.class); 
      startActivity(intent); 
      return true; 

Hoặc làm thế nào ý đồ của tôi trong AndroidManifest.xml được cấu hình:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name=".SettingsActivity" 
    android:label="@string/title_activity_settings" 
    android:parentActivityName=".MainActivity"> 
    <intent-filter> 
     <category android:name="android.intent.category.PREFERENCE" /> 
    </intent-filter> 
</activity> 

Đó có thể gây ra vấn đề này, hoặc nếu đây chỉ là hành vi chính xác mà tôi cần ghi đè và nếu vậy, cách "ghi đè" chính xác là gì?

+0

Via G + I được đạo diễn cho 'NavUtils' và [Cung cấp Up Navigation] (http://developer.android.com/training/implementing- navigation/ancestral.html) guide, Điều này rất hữu ích trong sự hiểu biết của tôi. – hoss

Trả lời

10

Di

android: parentActivityName = "MainActivity"

từ file manifest cho SettingsActivity.

Chỉnh sửa: Bước trên không còn cần thiết nữa.

Trong lớp SettingsActivity của bạn, làm như sau:

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

Tuyệt vời, 'android.R.id.home' là nugget mà tôi đã bỏ lỡ để tìm kiếm. Tuy nhiên, tôi đã để lại 'android: parentActivityName =". MainActivity "' bởi vì việc xóa nó đã xóa tất cả các nút của thanh tác vụ. nhưng bây giờ Back và UP làm điều tương tự. – hoss

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