在哪里可以调用Intents

时间:2012-10-27 17:21:35

标签: android

  

可能重复:
  Launching intent from a class outside an activity

我只是想知道可以从POJO类使用intent还是必须在扩展Activity的一个中使用它?如果它可以如何实现if?

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);
}

}

2 个答案:

答案 0 :(得分: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);

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

所以代码行将是,

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

答案 1 :(得分:2)

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

Intent myIntent = new Intent(mContext, newActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(myIntent);