0

我正在从一个新线程发送一个“广播”。并收到“com.internectics.fragment.AddPackFragment$6.run 处的 java.lang.NullPointerException”错误。我在这里强调一下: 1. 这些代码在 DialogFragment 的子类中 2. 如果我删除“getActivity().sendBroadcast(intent);”这行,也不例外。所以我相信这是根本原因。

感谢是否有人可以评论我的问题并帮助我解决问题

new Thread() {
        public void run() {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //some other codes skipped here, including saving data to persistence
                    Intent intent = new Intent();
                    intent.setAction(Global.BROADCAST_ACTION_UPDATE_MASTER_VIEW);
                    intent.putExtra(Global.KEY_FROM, Global.BROADCAST_EXTRA_FROM_NEW_PACK);
                    getActivity().sendBroadcast(intent);
                }
            });
        };
    }.start();
4

2 回答 2

1

您能否在执行线程之前获得对活动的最终引用,并在运行方法中使用该引用?使用前一定要检查它不为空

于 2013-07-29T23:47:44.173 回答
0

目前尚不清楚,为什么您需要一个带有 runOnUiThread(...) 的新线程来执行此操作。根据http://developer.android.com/reference/android/content/Context.html#sendBroadcast%28android.content.Intent%29

This call is asynchronous; it returns immediately, and you will continue executing while the receivers are run. 
于 2013-07-29T22:08:09.790 回答