从非Activity类开始一个新的Activity

Nad*_*eem 15 android android-activity

我想在非Activity类中启动一个新的活动来实现DialogListener以下是我的代码:

public class FacebookLoginDialog implements DialogListener {
  @Override
  public void onComplete(Bundle values) {
    HomeActivity.showInLog(values.toString());

    Intent i1 = new Intent (this, SearchActivity.class);
    startActivity(i1);
  }

  @Override
  public void onFacebookError(FacebookError e) {
    // TODO Auto-generated method stub
  }

  @Override
  public void onError(DialogError e) {
    // TODO Auto-generated method stub
  }

  @Override
  public void onCancel() {
    // TODO Auto-generated method stub
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法使用意图onComplete方法启动新活动,请帮忙.

谢谢

Mal*_*olm 23

这不起作用,因为您需要a Context才能开始新活动.您可以将类重组为以下内容:

public class FacebookLoginDialog implements DialogListener {
  private final Context context;

  public FacebookLoginDialog(Context context) {
    this.context = context;
  }

  @Override
  public void onComplete(Bundle values) {
    HomeActivity.showInLog(values.toString());

    Intent i1 = new Intent (context, SearchActivity.class);
    context.startActivity(i1);
  }

  //Other methods...
}
Run Code Online (Sandbox Code Playgroud)

然后它会工作.


小智 11

将上下文作为构造函数参数传递然后尝试此操作

Intent i = new Intent(this, SearchActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Run Code Online (Sandbox Code Playgroud)