0

サービスを呼び出すアクティビティがあります

startService(new android.content.Intent(this,NeglectedService.class);

私はトグルボタンを追加しようとしています.isChecked(True)の間、サービスは実行されます.逆もまた同様です.

        toggleService = (ToggleButton)findViewById(R.id.btnStopStartService);
    toggleService.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            if(toggleService.isChecked())
            {
                // Start the service
                showToast("true");
                startService(new Intent(this,NeglectedService.class));
            }
            else
            {
                // Pause/Stop the service
                showToast("false");
            }
        }
    });

しかし、この方法で呼び出すとエラーが返されます。対処方法がわかりません

The constructor Intent(new View.OnClickListener(){}, Class<NeglectedService>) is undefined

エラーが消えるよりも新しいインテント(this、NeglectedService.class)を削除すると、サービスは呼び出されません(ofc、アクティビティは誰を呼び出すかわかりません)

それで、私の質問: - アクティビティからサービスを監視および開始/停止するにはどうすればよいですか?

質問: サービスの状態を、それを作成したアクティビティから制御するにはどうすればよいですか? 私は togglebutton.onclicklistener を持っています。トグルがオンのときにサービスが実行され、オフにトグルされたときにサービスが停止するようにします。サービスの状態を保存するために sharedpreferences を使用しますが、if(toggleService.isChecked()) から startService(new android.content.Intent(this,NeglectedService.class); を呼び出すとエラーが発生します

4

2 に答える 2

1

使用しようとしているコンストラクターはContext最初の引数としてを取りthisますが、のインスタンスではなく、Context宣言しているのは匿名のクリック時リスナーです。外部インスタンスを渡すには、それを修飾する必要があります。

startService(new Intent(MyActivity.this, NeglectedService.class));

MyActivityアクティビティクラスの名前はどこですか。

于 2011-06-23T20:15:39.167 に答える
1

あなたの問題は、thisインテントのインスタンス化の範囲です。はthis、 のインスタンスを参照していますが、 のインスタンスでView.OnClickListenerある必要がありますandroid.content.Context

あなたが含めたコードスニペットを含むアクティビティの名前はわかりませんが、名前が付けられている場合は、MyActivityClassに置き換える必要がありthisますMyActivityClass.this

于 2011-06-23T20:26:51.130 に答える