我想在非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
方法中的意图启动新活动,请提供帮助。
由于
答案 0 :(得分:23)
这不起作用,因为您需要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...
}
然后它会起作用。
答案 1 :(得分:11)
将上下文作为构造函数参数传递,然后尝试此
Intent i = new Intent(this, SearchActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
答案 2 :(得分:0)
使用非活动类中的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"));
答案 3 :(得分:-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);