繁体   English   中英

Java 方法 - 缺少 return 语句

[英]Java method - missing return statement

所以我在这个问题上找到了很多例子,但修复它的方法似乎不同。 所以在这里我正在寻找解决我的具体问题的方法。

这是我的代码:

package com.example.frederik.snapsule;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

public class MainActivity extends Activity {

    LoginButton login;
    TextView info;
    CallbackManager callbackManager;

    //Creating and initializing the feature(Code from Facebook install guide)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext()); //Calls for the facebook feature
    }

    @Override
    public View onCreateView(
            LayoutInflater inflater,
            ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.content_main, container, false);

        login = (LoginButton) view.findViewById(R.id.login_button);
        login.setReadPermissions("user_friends");

        // Callback registration
        login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
            }

            @Override
            public void onCancel() {
                // App code
            }

            @Override
            public void onError(FacebookException exception) {
                // App code
            }
        });
    }
}

在倒数第二个“}”我收到错误“缺少返回语句”,但在我看来它似乎是正确的。

OncreateView返回类型为View ,因此您必须返回一个附加到活动的视图。

如果您要覆盖onCreate方法,则可能不需要覆盖OnCreateView方法。 onCreate方法中,您可以使用setContentView(R.layout.content_main)

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.content_main, container, false);

    login = (LoginButton) view.findViewById(R.id.login_button);
    login.setReadPermissions("user_friends");

    // Callback registration
    login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
    /**
     *return view 
     */
    return view;
} 

修复此错误的方法始终相同:当方法具有返回类型且并非所有代码路径都返回该类型的值时,就会发生错误。 onCreateView方法应该返回一个View ,在你的情况下它没有。 您将视图膨胀view变量中,但您永远不会返回该值。

将您的代码更改为:

@Override
public View onCreateView(
        LayoutInflater inflater,
        ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.content_main, container, false);

    login = (LoginButton) view.findViewById(R.id.login_button);
    login.setReadPermissions("user_friends");

    // Callback registration
    login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });

    return view; // <<< THIS IS IT
}

首先添加这个return view;

  @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
    return view;//Add this 
}

setContentView在哪里?

http://developer.android.com/intl/es/reference/android/app/Activity.html#setContentView(android.view.View)

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);
        FacebookSdk.sdkInitialize(getApplicationContext()); //Calls for the facebook feature
    }

添加 return 语句,如下所示:

@Override
public View onCreateView(
        LayoutInflater inflater,
        ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.content_main, container, false);

    login = (LoginButton) view.findViewById(R.id.login_button);
    login.setReadPermissions("user_friends");

    // Callback registration
    login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
    return view;//view must be returned from this method
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM