Android 执行Asynctask时发生java.lang.NullPointerException

Android 执行Asynctask时发生java.lang.NullPointerException,android,android-asynctask,google-cloud-messaging,Android,Android Asynctask,Google Cloud Messaging,我想将用户注册到gcm服务器,因此我使用此功能: private void registerInBackground() { new AsyncTask<Void,Void,String>() { @Override protected String doInBackground(Void... params) { String msg = "";

我想将用户注册到gcm服务器,因此我使用此功能:

private void registerInBackground() {
         new AsyncTask<Void,Void,String>() {
                @Override
                protected String doInBackground(Void... params) {
                    String msg = "";
                    try {
                        if (gcm == null) {
                            gcm = GoogleCloudMessaging.getInstance(context);
                        }
                        regid = gcm.register(SENDER_ID);
                        msg = "Device registered, registration ID=" + regid;

                        // You should send the registration ID to your server over HTTP,
                        // so it can use GCM/HTTP or CCS to send messages to your app.
                        // The request to your server should be authenticated if your app
                        // is using accounts.
                        sendRegistrationIdToBackend();

                        // For this demo: we don't need to send it because the device
                        // will send upstream messages to a server that echo back the
                        // message using the 'from' address in the message.

                        // Persist the regID - no need to register again.
                      // storeRegistrationId(context, regid);
                    } catch (IOException ex) {
                        msg = "Error :" + ex.getMessage();
                        // If there is an error, don't just keep trying to register.
                        // Require the user to click a button again, or perform
                        // exponential back-off.
                    }
                    return msg;
                }

                @Override
                protected void onPostExecute(String msg) {
                    mDisplay.append(msg + "\n");
                }
            }.execute(null, null, null);

        }
private void registerInBackground(){
新建异步任务(){
@凌驾
受保护字符串doInBackground(无效…参数){
字符串msg=“”;
试一试{
如果(gcm==null){
gcm=GoogleCloudMessaging.getInstance(上下文);
}
regid=gcm.寄存器(发送方ID);
msg=“设备已注册,注册ID=“+regid;
//您应该通过HTTP将注册ID发送到服务器,
//因此,它可以使用GCM/HTTP或CCS向您的应用程序发送消息。
//如果您的应用程序
//正在使用帐户。
sendRegistrationIdToBackend();
//对于这个演示:我们不需要发送它,因为设备
//将向服务器发送上游消息,以回送
//使用消息中的“发件人”地址发送消息。
//坚持注册-无需再次注册。
//storeRegistrationId(上下文,regid);
}捕获(IOEX异常){
msg=“错误:”+ex.getMessage();
//如果出现错误,不要一直尝试注册。
//要求用户再次单击按钮,或执行以下操作
//退后。
}
返回味精;
}
@凌驾
受保护的void onPostExecute(字符串msg){
mDisplay.append(msg+“\n”);
}
}.执行(空,空,空);
}

它与前面描述的函数相同,所以我很惊讶得到一个NullPOinterEXCEPTION错误,我认为这是因为这行代码:execute(null,null,null,null),但这是google给我的!我该怎么办?

mDisplay初始化了吗?你真聪明!非常感谢:)