[英]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在哪里?
@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.