19

以下を実装する非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
  }
}

インテントインonCompleteメソッドを使用して新しいアクティビティを開始できません。助けてください。

ありがとう

4

4 に答える 4

28

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

その後、それは動作します。

于 2012-09-30T19:50:10.697 に答える
13

コンストラクターパラメーターとしてコンテキストを渡し、これを試してください

Intent i = new Intent(this, SearchActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
于 2012-09-30T20:01:52.117 に答える
1

非アクティビティクラスの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"));
于 2019-08-19T01:59:26.157 に答える
-1

簡単に使用できるように、この特定のメソッドのメソッドを使用できます。

public class Something
{
   public static void navigate(Context context,  Class<?> nameOfClass)
    {
        Intent i = new Intent(context, nameOfClass);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }
}

これを呼び出すことにより、他のクラスおよびメソッドで毎回呼び出すことができます。

Something.navigate(activityName.this, classYourWantTONavigateTo.class);
于 2021-02-19T08:03:36.573 に答える