2013-04-09 25 views
7

Giả sử tôi có hoạt động A hoạt động như hoạt động gốc cho ứng dụng của tôi. và hình thành hoạt động này tôi đi đến hoạt động B.Hoạt động khởi động Android mà không tạo phiên bản mới

Tôi muốn để có thể quay trở lại từ B đến A Nếu không tạo thể hiện mới của Hoạt động A.

mã này là trong Hoạt động B

public void onBackPressed() { 
     super.onBackPressed(); 
//  Intent intent= new Intent(getBaseContext(), MainActivity.class); 
//  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     Intent myIntent = new Intent(getBaseContext(), MainActivity.class); 
     myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(myIntent); 
     Log.d("Back", "TEST"); 
    } 

nhưng nó sill gọi onCreate về hoạt động A. Những gì tôi muốn làm là có A ở chế độ nền khi hoạt động b được bắt đầu và bất cứ khi nào nó được hoàn tất chuyển đổi trở lại hoạt động Một

đây là biểu hiện

<activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" 
      android:screenOrientation="unspecified" 
      android:launchMode="singleTask" 
      android:stateNotNeeded="false"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.HOME"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:label="@string/app_name" 
      android:name=".SubmenuActivty" > 
     </activity> 
+0

Cám ơn ai đánh giá này xuống. bạn thậm chí đã đọc? –

Trả lời

0

Hãy thử điều này

public void onBackPressed() { 
    super.onBackPressed(); 
    Log.d("Back", "TEST"); 
} 

Và đó là tất cả, những gì bạn cần.

2

Bạn không cần làm gì cả. Chỉ cần loại bỏ phương pháp onBackPressed() của bạn từ Hoạt động B.

Theo mặc định khi bạn di chuyển từ Hoạt động Một-Hoạt động B, Android thêm Hoạt động Một đến backstack. Khi bạn nhấn nút quay lại từ Hoạt động B hoặc hoàn thành, nó sẽ tự động khôi phục Hoạt động A từ backstack.

Nếu bạn muốn kết thúc Hoạt động B theo cách lập trình gọi phương thức finish() của hoạt động khi bạn muốn thực hiện.

+0

nó sẽ khôi phục lại hoạt động a từ backstack bằng cách tạo ra trường hợp mới của nó. tôi muốn có Activity A hoạt động mọi lúc –

+0

do u kết thúc Hoạt động A trong khi bắt đầu Hoạt động B? Nếu không chắc chắn Hoạt động A sẽ được khôi phục về trạng thái cuối cùng từ backstack –

+0

i dont i sử dụng Intent myIntent = new Intent (getBaseContext(), SubmenuActivty.class); startActivity (myIntent); để bắt đầu hoạt động A –

0

Sử dụng moveTaskToBack (true);

public void onBackPressed() { 
// TODO Auto-generated method stub 
moveTaskToBack(true); 
super.onBackPressed(); 
} 

hoặc Bạn cũng có thể sử dụng kết thúc()

+0

điều này không giữ hoạt động sống nó sẽ chỉ tạo ra trường hợp mới của hoạt động .. nó sẽ gọi phương thức oncreate một lần nữa –

11

Theo vòng đời hoạt động android, khi bạn khởi động một hoạt động A:

Cuộc sống danh sách phương pháp Cycle:

Activity A.onResume(); 
Activity A.onStart(); 
Activity A.onCreate(); 

Trạng thái hoạt động:

Activity A : Resumed 

Khi bạn khởi động hoạt động B bây giờ:

Cuộc sống phương pháp Cycle danh sách:

Activity A.onStop(); 
Activity B.onResume(); 
Activity B.onStart(); 
Activity B.onCreate(); 
Activity A.onPause(); 
    ... 
    ... 
    ... 

Hoạt động Tình trạng:

Activity A : Stopped 
    Activity B : Resumed 

Và khi bạn lại bắt đầu A bây giờ:

Cuộc sống phương pháp Cycle danh sách:

Activity B.onDestroy(); 
Activity B.onStop(); 
Activity A.onResume(); 
    .... 
    .... 
    ....  

Hoạt động Tình trạng:

Activity B : Destroyed 
    Activity A : Resumed 

Đây là vòng đời của một hoạt động: enter image description here

Bạn có thể tìm thấy những thông tin chi tiết here

Theo hành vi mặc định, hoạt động A chuyển sang trạng thái onStop() và không hoạt động và cần phải tạo một cá thể mới khi quay trở lại hoạt động A. Tất cả những gì tôi biết - không có cách nào để duy trì trạng thái A.

+3

Khi A bắt đầu B, A chỉ dừng lại (nhưng vẫn ** còn sống **).Ngay sau khi B kết thúc nó sẽ tự động khởi động lại và tiếp tục A. A sẽ vẫn còn sống cho đến khi nó gọi 'kết thúc()' trên chính nó. –

3
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

Hãy thử nó ... Nó làm cho hoạt động cũ để phía trước mà không thể hiện mới ...

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