2009-11-17 23 views
7

Tôi có 3 Hoạt động mà người dùng của tôi liên tục lặp qua. Khi người dùng quay trở lại màn hình chính, tôi cần phải chấm dứt lịch sử trước đó để người dùng không thể nhấn nút quay lại và kết thúc trên màn hình # 2, điều gì sẽ là một cách hay để làm điều gì đó như vậy? BTW - Tôi đang sử dụng 1,6 (API cấp 4)Android - lịch sử rõ ràng khi điều hướng giữa các Hoạt động

Để nhắc lại - giả sử tôi không biết hoặc dự đoán đường dẫn dẫn tôi đến chế độ xem gốc. Nhưng khi tôi tải nó, tôi muốn xóa lịch sử đã dẫn người dùng đến chế độ xem đó. Trong 2.0 nó có thể ghi đè lên với Hoạt động # onBackPressed nhưng tôi cần một cái gì đó như thế trong 1,6

Trả lời

1

Ok, tôi cho rằng bạn có 3 hoạt động, A, B và C. A là màn hình chính và người dùng sẽ lặp qua 3 trang này. Nhưng khi người dùng nhập A, sự kiện onBackPresed sẽ được thực hiện dưới dạng thoát. Tôi có làm rõ không?

Trong trường hợp này, khi bạn cố gắng khởi động A từ B hoặc C, bạn có thể thêm Intent.FLAG_ACTIVITY_CLEAR_TOP vào Intent, sau đó ngăn xếp lịch sử sẽ bị xóa và chỉ có A trong ngăn xếp của bạn.

Nếu bạn muốn chặn sự kiện khóa sau, bạn không cần ghi đè lênBackPressed(). Chúng tôi luôn sử dụng onKeyDown trước khi phương thức này khả dụng.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 

    } 
    return super.onKeyDown(keyCode, event); 
} 
1

Như tôi biết Nếu bạn muốn xoá lịch sử của hoạt động bạn có thể làm theo hai cách

(1). Trong tập tin manifest.xml

Bạn cũng có thể thực hiện điều này từ tập tin AndroidManifest.xml của bạn, chỉ cần thêm android: noHistory = "true" thuộc tính trong những bạn muốn

dụ

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.rdc.activity" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="xx" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".PickGalleryImageActivity" 
        android:label="@string/app_name" 
        android:noHistory="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

(2). Trong mã Java

bạn có thể thêm lá cờ này khi bạn bắt đầu hoạt động Intent.FLAG_ACTIVITY_NO_HISTORY

dụ

Intent intent = new Intent(this, SomeOtherClass.class); 

// do not keep this intent in history 
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

startActivity(intent); 

Và một trong những khác là nếu bạn đang tìm kiếm Nút Quay lại điều chỉnh lại hồ sơ dưới đây ví dụ có thể giúp bạn

Nếu tìm kiếm android mức api tối đa 1.6.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
    //todo here 
    return true; 
    } 
    return super.onKeyDown(keyCode, event);  
} 

Hy vọng Nó sẽ giúp bạn !!

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