0

可能重复:
从活动之外的类启动意图

我只是想知道可以从 POJO 类中使用意图,还是必须在扩展 Activity 的类中使用它?如果可以,您将如何实施?

public class DataManager{

public DataManager (){}


public void get ()
{
    Intent intent = new Intent (null,Webservice.class);
    intent.putExtra("uri", "http://someuri/service/users/id/21001");
    startActivity (intent);
}

}

4

2 回答 2

5

其实startActivity()是Activity类的方法。不是任何java类方法。因此,要在其他pojo 类中访问此方法,您必须使用Context活动。

你可以做类似的事情,

public class DataManager{

 Context mContext;

 public DataManager (Context context){
 mContext = context;
 }    

 public void get ()
 {
    Intent intent = new Intent (mContext,Webservice.class);
    intent.putExtra("uri", "http://someuri/service/users/id/21001");
    mContext.startActivity (intent);
 }
}

更新:

需要注意的一件事是您的 Intent 代码行,

Intent intent = new Intent (null,Webservice.class);

什么是?您必须将 Activity 类的引用作为 Intent 构造函数的第一个参数。只是检查一下。

所以代码行将是,

Intent intent = new Intent (mContext,Webservice.class);
于 2012-10-27T17:24:21.667 回答
2

是的,您可以Activity从任何其他班级拨打电话。在将Context您的引用传递Current Activity给该类之后。例如...

Intent myIntent = new Intent(mContext, newActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(myIntent);
于 2012-10-27T17:25:30.833 回答