在哪里可以调用Intents

Mar*_*nis 0 android

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

我只是想知道可以从POJO类使用intent还是必须在扩展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);
}
Run Code Online (Sandbox Code Playgroud)

}

use*_*305 5

实际上,startActivity()是Activity类的方法.不是任何java类方法.因此,要在其他pojo类中访问此方法,您必须使用Contextactivity.

你可以做点什么,

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);
 }
}
Run Code Online (Sandbox Code Playgroud)

更新:

有一点需要注意的是你的Intent代码行,

Intent intent = new Intent (null,Webservice.class);
Run Code Online (Sandbox Code Playgroud)

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

那么代码行将是,

Intent intent = new Intent (mContext,Webservice.class);
Run Code Online (Sandbox Code Playgroud)

  • @MMohsinNaeem - 只有在想要将活动放入新任务时才需要它.这不是必需的. (2认同)