1

Androidアプリケーションで、ネットワーク接続を監視するために次のコードを使用しています。

 ConnectivityManager conMgr = 
       (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);

このコードは、アクティビティに参加している場合はうまく機能しますが、ジェネリッククラスに参加している場合は、メソッドを呼び出すことができません。

getSystemService

この問題を回避するにはどうすればよいですか?

4

3 に答える 3

2

非アクティビティクラスでアクセスする場合はgetSystemService、コンストラクタを次のように使用して、現在のアクティビティコンテキストを非アクティビティクラスに渡します。

    public class nonActivity{

    Context context;
     ConnectivityManager conMgr ;

    pulblic nonActivity(Context context){

      this.context=context;

    // now get getSystemService as :
       this.conMgr = 
       (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

      }

 }

そして、現在のアクティビティコンテキストを非アクティビティクラスに次のように渡します。

nonActivity nonactivityobj=new nonActivity(Your_Current_Activity.this);
于 2012-12-28T11:32:28.697 に答える
1

そのときにジェネリッククラスを呼び出すときは、その中のアクティビティのコンテキストを渡す必要があります。

だからあなたはアクセスすることができますgetSystemService

コード:-

public class Test
{
    Context context;
    ConnectivityManager connectivityManager ;

    pulblic Test(Context context)
    {
      this.context=context;
      connectivityManager = 
      (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    }
 }

アクティビティクラスから以下のようにコンテキストを渡します。

Test test = new Test(CurrentActivity.this);
于 2012-12-28T11:33:08.913 に答える
1

これの代わりにContextを使用すると、問題が解決され、コード行の代わりにクラスの行の下に書き込みます。

ConnectivityManager conMgr = (ConnectivityManager)Context.getSystemService(Context.CONNECTIVITY_SERVICE);
于 2012-12-28T11:33:42.097 に答える