0

重複の可能性:
アクティビティ外のクラスからインテントを起動する

インテントをPOJOクラスから使用できるのか、それともアクティビティを拡張するクラスで使用する必要があるのか​​、疑問に思っていました。可能であれば、どのように実装しますか?

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

アップデート:

注意すべき点の1つは、インテントコード行です。

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

nullとは何ですか?Intentコンストラクターの最初のパラメーターとしてActivityクラスの参照を配置する必要があります。確認してください。

したがって、コード行は次のようになります。

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 に答える