3

我正在使用开发者网站上的相同代码,但在编译时出错。 http://developer.android.com/google/gcm/gs.html

复制下面的代码

private void registerBackground() {
new AsyncTask() {
    @Override
    protected String doInBackground(Void... params) {
        String msg = "";
        try {
            regid = gcm.register(GCM_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.

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

            // Save the regid for future use - no need to register again.
            SharedPreferences.Editor editor = prefs.edit();
            editor.putString(PROPERTY_REG_ID, regid);
            editor.commit();
        } catch (IOException ex) {
            msg = "Error :" + ex.getMessage();
        }
        return msg;
    }
    // Once registration is done, display the registration status
    // string in the Activity's UI.
    @Override
    protected void onPostExecute(String msg) {
        mDisplay.append(msg + "\n");
    }
}.execute(null, null, null);
}

我在编译时收到错误声明“Asynctask 是原始类型。应该对泛型类型的引用进行参数化。

4

1 回答 1

9

您尚未声明泛型类型参数。

改变

new AsyncTask() {

new AsyncTask<Void,Void,String>() {

并且,

execute(null, null, null);

可以改为

execute();
于 2013-05-26T18:19:02.777 回答