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