3

MainActivity.javaにStartButtonStopButtonの2つのボタンがあります。StartButtonを押すと、サービスが作成され、StartButtonが無効になります。StopButton Serviceを押すと、破棄され、StartButtonが有効になります。

私がやりたかったのは、サービスがタスクを完了したときにスタートボタンを有効にすることです。MainActivity.javaで通知またはトリガータイプのイベントまたはメッセージ値を返すため、スタートボタンが有効になります

わかりやすくするためのアイデア、コンセプト、コードを教えてください。

4

3 に答える 3

0

やってみました、

MyButton.setClickable(false);

ボタンが無効になります。

MyButton.setClickable(true);

ボタンが有効になります。

ただし、ボタンを非表示または表示する場合は、次を使用できます。

MyButton.setVisibiity(VIEW.VISIBLE);MyButton.setVisibiity(VIEW.INVISIBLE);

編集-ボタンを有効にしたいので、そのタスクが完了したら、フラグ値trueでmainActivityを開くことができます

Intent i= new Intent(getBaseContext(), myActivity.class);
i.putExtra("flag", true);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(i);

mainActivityで、フラグの値を確認します。

Boolean flag;
flag = this.getIntent().getBooleanExtra("flag", false);
if(flag == true) {
MyButton.setClickable(true);
}

ただし、そのためには、最初はフラグの値をに保つ必要がありますfalse

ボタンをクリックすると、クリック不可として設定できます。

于 2013-01-19T07:50:54.287 に答える
0

これを達成するには多くの方法があります。ブロードキャスト レシーバーで 1 つ教えてください。BroadcastReceiver の概念を理解していることを願っています。

アクティビティに必要な変更

1) アクティビティの内部クラスとしてブロードキャスト レシーバーを作成します。

2)「MY_ACTION」と仮定して、何らかのアクションでそれを登録します(onPause / onDestroyメソッドでこのレシーバーを登録解除することを忘れないでください)

3)サービスがタスクを完了し、ブロードキャストレシーバーの onReceive メソッドを使用しているとします。コードを記述して、ボタンを有効/無効にします(方法を知っていることを願っています)。

サービスに必要な変更

1) タスクが完了したと思われるコードを見つけます。

2) 同じアクション (「MY_ACTION」) でインテントを作成します。

3) sendBroadcast を使用してメッセージをブロードキャストし、intent をパラメーターとして指定します。これで完了です。:)

立ち往生していると感じた場合はいつでもお知らせください。

于 2013-01-19T09:44:42.777 に答える
0

サービスとアプリケーション間の通信を理解するには、android 開発者向けドキュメントの例をご覧ください。onServiceDisconnected() および onServiceConnected() メソッドでボタンを有効または無効にできます。

デフォルトでは、サービスはアプリと同じスレッドで実行されることに注意してください。

于 2013-01-19T08:31:22.613 に答える