1

放送受信機を使って決まった時間にこのメソッドを呼び出すアラームを鳴らしたい

/**
 * Delete all messages
 */
private void performDeleteAll() {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMessage(getString(R.string.confirm_message))
            .setCancelable(false)
            .setNegativeButton(getString(R.string.confirm_no),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    })
            .setPositiveButton(getString(R.string.confirm_yes),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // delete all messages
                            mHandler.post(mDeleteAllMessages);
                            adapter.refresh();
                        }
                    });
    AlertDialog alert = builder.create();
    alert.show();

}

すべてのメッセージを削除してくれましたが、発生していませんplzは事前に感謝します

/***すべてのメッセージを削除します。0-正常に削除されました。1-削除するものはありません。* /

final Runnable mDeleteAllMessages = new Runnable() {
    public void run() {
        getActivity().setProgressBarIndeterminateVisibility(true);
        boolean result = false;

        int deleted = 0;

        if (adapter.getCount() == 0) {
            deleted = 1;
        } else {
            result = model.deleteAllMessages();
        }

        try {
            if (deleted == 1) {
                toastLong(R.string.no_messages_to_delete);
            } else {
                if (result) {

                    toastLong(R.string.messages_deleted);
                    showMessages();
                } else {
                    toastLong(R.string.messages_deleted_failed);
                }
            }
            getActivity().setProgressBarIndeterminateVisibility(false);
        } catch (Exception e) {
            return;
        }
    }
};

私はこの放送受信機を使用しています

public class AlarmReceiver extends BroadcastReceiver implements Runnable {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(context, "Import Messages Invoke ",Toast.LENGTH_LONG).show();
    //  context.startService(new Intent(context,ImportMessagesTask.class));

        MessagesModel.deleteAllMessages();{
    //   new MessagesModel().deleteAllMessages();

        Database.mMessagesContentProvider.deleteAllMessages();
        }

    //  mHandler.post(mDeleteAllMessages);
    //  adapter.refresh();

あなたが言ったように私はアクティビティを作成しました

パブリッククラスActivityはPendingMessagesを拡張し、Runnable{を実装します

/**
 * Delete all messages. 0 - Successfully deleted. 1 - There is nothing to be
 * deleted.
 */

@Override
public void run() {
    // TODO Auto-generated method stub
    getActivity().setProgressBarIndeterminateVisibility(true);
    boolean result = false;

    int deleted = 0;

    if (adapter.getCount() == 0) {
        deleted = 1;
    } else {
        result = model.deleteAllMessages();
    }

    try {
        if (deleted == 1) {
            toastLong(R.string.no_messages_to_delete);
        } else {
            if (result) {

                toastLong(R.string.messages_deleted);
                showMessages();
            } else {
                toastLong(R.string.messages_deleted_failed);
            }
        }
        getActivity().setProgressBarIndeterminateVisibility(false);
    } catch (Exception e) {
        return;
    }
}

}

それからそれを呼び出しました

context.startService(new Intent(context、Activity.class));

しかし、それは機能していません、そして私はそれを介して呼び出しました

context.startActivity(new Intent(context、Activity.class));

それから閉じる力私はそれで何の助けも得ていませんplzは私に前もって正しい感謝をします

4

2 に答える 2

1

BroadCastRecieverからUIを表示することはできません。

上記のコードをアクティビティに入れて、BroadcastRecieverからアクティビティを起動します

編集:使用

context.startActivity(intent);

活動を開始する

于 2012-12-13T12:50:51.230 に答える
1

実際の問題は、UIをバックグラウンドで実行したかったのですが、Androidでは実行できないことでした。次に、Serviceを使用してバックグラウンドで実行しました

于 2013-02-01T08:50:36.943 に答える