2014-09-19 115 views
-1

我在做這樣的事情:如何終止活動並切換到另一個活動?

public class MyActivity extends Activity { 
    @Override 
    public void onStart() { 
    super.onStart(); 
    User user = new Entrance().enter(); 
    // continue with user, since it's a valid one 
    } 
} 
// I'm using this class from many activities 
public class Entrance { 
    public User enter() { 
    try { 
     User user = new Hub().enter(); 
    } catch (AuthenticationFailedException ex) { 
     this.startActivity(new Intent(this, LoginActivity.class)); 
     this.finish(); 
    } 
    return user; 
    } 
} 

此代碼不起作用,因爲finish()不拋出異常,讓執行流繼續。這種情況下適當的設計是什麼?

+2

試試「noHistory」在清單MyActivity。 – TeeTracker 2014-09-19 12:37:04

+0

返回null,或拋出異常。 – njzk2 2014-09-19 12:50:04

回答

0

您可以使用Activity.isFinishing()方法來分離您的邏輯流程。

public void onStart() { 
    super.onStart(); 
    User user = new Entrance().enter(); 
    // continue with user, since it's a valid one 
    if (isFinishing()) { 
     ... 
    } else { 
     ... 
    } 
} 
0

由於您使用的是來自多個活動的入門課程,因此您應該將活動的上下文傳遞給入門課程中的enter()方法。它應該是如下:

public User enter(Context context) { 
    try { 
    User user = new Hub().enter(); 
    } catch (AuthenticationFailedException ex) { 
    context.startActivity(new Intent(context, LoginActivity.class)); 
    context.finish(); 
    } 
    return user; 
} 
0

試試這個,首先要創建一個意圖,第二個完成了通過活動啓動意圖在下/所需的活性

Intent loginIntent=new Intent(MyActivity.this, LoginActivity.class); 
MyActivity.this.finish(); 
startActivity(loginIntent); 
相關問題