1

這裏是的AsyncTask構造:啓動活動傳遞上下文的從活動

private Context context; 
private MainActivity activity; 
public databaseTask(MainActivity activity, String task, String username, String password) { 
    super(); 
    this.activity = activity; 
    this.context = this.activity.getApplicationContext(); 

這裏是在MainActivity電話:

databaseTask dbGetGroupsTask = new databaseTask(MainActivity.this, "login", username, password); 
dbGetGroupsTask.execute(username); 

在onPostExecute我有這樣的代碼:

Intent s = new Intent(context, userLandingPage.class); 
Bundle b = new Bundle(); 
b.putString("userName", username); 
s.putExtras(b); 
context.startActivity(s); 

我在運行時得到的錯誤是:從Activity的外部調用startActivity()分機需要FLAG_ACTIVITY_NEW_TASK標誌。這真的是你想要的嗎?

從以上問題中的所有答覆中,我已經看到它說,爲了在沒有設置標誌的情況下從活動外部開始活動(因爲不建議設置標誌),您需要擁有活動的上下文。我以爲這就是我所做的,所以我不知道爲什麼這不起作用。

+0

嘗試activity.startActivity(S)的活動; –

+0

'Intent s = new Intent(activity,userLandingPage.class);' – Pragnani

回答

1

由於您的AsyncTask的論據之一是,你可以直接使用

Intent s = new Intent(activity, userLandingPage.class); 
activity.startActivity(s); 
+1

正確的是,不要從應用程序的上下文開始一個活動,它並不是爲了那個......如果你確實創建了一個新的任務,除非你的活動進入一個單一的任務活動,我不知道這個行爲甚至沒有定義... – codeScriber

+0

我剛剛試過運行,以及我仍然得到相同的運行時錯誤有關從外部調用startActivity()上下文。 – terriblesarcasm

+0

使用活動來開始新的活動。你在onPostExecute裏面運行它嗎? – Blackbelt