Android 从非活动类启动新活动

Android 从非活动类启动新活动,android,android-activity,Android,Android Activity,我想在非活动类中启动一个新的活动,该类实现了一个DialogListener,下面是我的代码: public class FacebookLoginDialog implements DialogListener { @Override public void onComplete(Bundle values) { HomeActivity.showInLog(values.toString()); Intent i1 = new Intent (this, Searc

我想在非活动类中启动一个新的活动,该类实现了一个
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
  }
}
我无法在
onComplete
方法中使用intent启动新活动,请帮助


谢谢

这不起作用,因为您需要一个
上下文
来启动新活动。您可以将类重组为以下内容:

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...
}

然后它就会工作。

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

Intent i = new Intent(this, SearchActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

使用非活动类中的starActivity:

Intent intent = new Intent(android.content.Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "YOUR STRING");
        intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Share via...");
        context.startActivity(Intent.createChooser(intent, "Share"));

为了便于使用,您可以为该特定方法指定一种方法:

公共类
{
公共静态void导航(上下文上下文、类名称)
{
意图i=新意图(上下文、类名称);
i、 addFlags(意图、标志、活动、新任务);
背景。起始触觉(i);
}
}
每次都可以在其他类和方法中调用,方法是:

Something.navigate(activityName.this,classYourWantTONavigateTo.class);

尝试将“this”更改为getApplicationContext(),或从活动中传递上下文注意,我希望在登录成功后启动活动,这就是我使用onComplete方法启动活动的原因我已将其更改为getApplicationContext(),但它无法解决我的问题。您能告诉我应该如何准确地传递活动的上下文吗?SearchActivity是我想开始的活动,我担心构造函数中的上下文来自何处。(Activity).getContext()不是更好吗?@Simon没有
Activity.getContext()方法,Activity已经是一个context.Hmm了。工作13小时,晚餐喝太多酒。我知道我的意思,这是错误的和复杂的问题,错误地表达。是时候结束这一夜了……嗨,马尔科姆,我也试过了,但它在Intent i1=new Intent(这个,SearchActivity.class)行上出现了错误;。我相信它会真的工作,但现在我得到的登录错误。所以我可以告诉你这是100%有效。不管怎样,很多ThanksIt在三星s4上工作,但在Galaxy Note 2中却不工作!!有什么建议吗