通过处理程序

时间:2016-03-04 19:31:22

标签: android

我在一个活动的oncreate里面有一个处理程序。它从handler.sendEmptyMessage收到一个值。

handleMessage被触发,直到我尝试更新textview的行,如下所示:

mImageCountText.setText("" + mCountText);

但是textview的文本永远不会改变。我在这里缺少什么?

是否有任何明显的问题导致此问题?

非常感谢任何帮助。

修改

处理程序代码

 Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            final int what = msg.what;
            if (what == Constants.HANDLER_APP_UPDATE) {
                if (!UserHelper.isAppBuildVerionSameAsUpdate(HomeActivity.this)) {
                    updateNotificationAlert();
                    showAppUpdatePopUp();
                }
            } else if (what == Constants.HANDLER_COLLECTION_UPDATE) {
                //TODO: Refresh collection
            } else {
                mCountText = what;
                if (!Utils.isTablet()) {
                    if (mCountText == 0) {
                        mImageCountText.setVisibility(View.INVISIBLE);
                    } else {

                        mImageCountText.setVisibility(View.VISIBLE);
                        mImageCountText.setText("" + mCountText); // this does not work
                    }
                } else {

                    if (mCountText == 0) {
                        mCollectionsFragment.refreshAfterUpload();
                        mCountTextForUplaod.setVisibility(View.INVISIBLE);
                    } else {
                        mCollectionsFragment.refreshAfterUpload();
                        mCountTextForUplaod.setVisibility(View.VISIBLE);
                        mCountTextForUplaod.setText("" + mCountText);

                    }
                }
            }

        }
    };

发送价值的地方

 @Override
    public void onReceive(final Context context, final Intent intent) {


        Runnable runnable = new Runnable() {
            public void run() {

                if (intent.getAction() != null && intent.getAction().equals(Constants.BROADCAST_INTENT_FILTER)) {
                    boolean broadcastStatus = intent.getBooleanExtra(Constants.BROADCAST_DATA_STATUS, false);
                    String broadcastStatusMessage = intent.getStringExtra(Constants.BROADCAST_DATA_STATUS_MESAGE);
                    if (broadcastStatus) {
                        mCountText = PreferenceHelper.getFromPreference(context, Constants.RECENT_IMAGES_COUNT, 0);
                        handler.sendEmptyMessage(PreferenceHelper.getFromPreference(context, Constants.RECENT_IMAGES_COUNT, 0));
                    }
                } else {
                    if (intent.getAction() != null && intent.getAction().equals(Constants.BROADCAST_ACTION_APP_UPDATE)) {
                        handler.sendEmptyMessage(Constants.HANDLER_APP_UPDATE);
                    } else if (intent.getAction() != null && intent.getAction().equals(Constants.BROADCAST_ACTION_COLLECTION_UPDATE)) {
                        handler.sendEmptyMessage(Constants.HANDLER_COLLECTION_UPDATE);
                    }
                }

            }
        };

        Thread mythread = new Thread(runnable);
        mythread.start();

1 个答案:

答案 0 :(得分:0)

您的代码太复杂了。你不需要处理程序,也不需要线程。你是这样的:

@Override
public void onReceive(final Context context, final Intent intent) {

    if (intent.getAction() != null && intent.getAction().equals(Constants.BROADCAST_INTENT_FILTER)) {
        boolean broadcastStatus = intent.getBooleanExtra(Constants.BROADCAST_DATA_STATUS, false);
        String broadcastStatusMessage = intent.getStringExtra(Constants.BROADCAST_DATA_STATUS_MESAGE);
        if (broadcastStatus) {
            mCountText = PreferenceHelper.getFromPreference(context, Constants.RECENT_IMAGES_COUNT, 0);
            if (mCountText == 0) {
                mCollectionsFragment.refreshAfterUpload();
                mCountTextForUplaod.setVisibility(View.INVISIBLE);
            } else {
                mCollectionsFragment.refreshAfterUpload();
                mCountTextForUplaod.setVisibility(View.VISIBLE);
                mCountTextForUplaod.setText("" + mCountText);
            }
        }
    } else {
        if (intent.getAction() != null && intent.getAction().equals(Constants.BROADCAST_ACTION_APP_UPDATE)) {
            if (!UserHelper.isAppBuildVerionSameAsUpdate(HomeActivity.this)) {
                updateNotificationAlert();
                showAppUpdatePopUp();
            }
        } else if (intent.getAction() != null && intent.getAction().equals(Constants.BROADCAST_ACTION_COLLECTION_UPDATE)) {
            // TODO
        }
    }
}