Java方法 - 缺少return语句

时间:2015-11-03 08:39:23

标签: java android

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

这是我的代码:

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
            }
        });
    }
}

在倒数第二个&#34;}&#34;我收到错误&#34;缺少退货声明&#34;,但在我看来它似乎是正确的。

4 个答案:

答案 0 :(得分:4)

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;
} 

答案 1 :(得分:1)

修复此错误的方法始终相同:当方法具有返回类型且并非所有代码路径都返回该类型的值时,会发生错误。 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 } 变量,但您永远不会返回该值。

将您的代码更改为:

svcutil.exe http://localhost:8990/Service1/ /out:Proxy.cs /config:App.config

答案 2 :(得分:1)

首先添加此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
    }

答案 3 :(得分:0)

添加如下所述的退货声明:

{{1}}