我使用backendless.com作为我的应用程序的后端。我需要将我的用户登录到一个片段中。我一直收到一个语法错误,说明backendless.com提供的异步登录方法不被识别。它在一项活动中运作得很好。有人知道如何让它在片段中工作吗?下面是错误的屏幕截图:
下面是我的片段的代码:
public class LoginFragment extends Fragment implements View.OnClickListener {
private FragmentTransaction ft;
private Button registerButton, resetButton, loginButton;
EditText userName, password;
private boolean isPopUpOpen;
BackendlessUser userOne = new BackendlessUser();
private static final String PREFS_LOGGED_IN = "AreYouLoggedInFile";
public OnClickedListener listener;
public LogInInterface loggedInListener;
static interface OnClickedListener{
public void buttonClicked(View v);
}
static interface LogInInterface{
public void userLoggedIn(boolean loggedIn);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.listener = (OnClickedListener)activity;
this.loggedInListener = (LogInInterface)activity;
}
public LoginFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
isPopUpOpen = false;
if (savedInstanceState!=null){
if (savedInstanceState.getBoolean("isDialogOpen")){
resetPopUpWindow();
}
}
View view = inflater.inflate(R.layout.fragment_login, container, false);
registerButton = (Button)view.findViewById(R.id.register_button);
resetButton = (Button) view.findViewById(R.id.reset_button);
password = (EditText)view.findViewById(R.id.fragment_login_password);
userName = (EditText)view.findViewById(R.id.fragment_login_username);
loginButton = (Button)view.findViewById(R.id.fragment_login_loginButton);
registerButton.setOnClickListener(this);
resetButton.setOnClickListener(this);
loginButton.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.register_button:{
listener.buttonClicked(v);
break;
}
case R.id.reset_button:{
isPopUpOpen = true;
resetPopUpWindow();
break;
}
case R.id.fragment_login_loginButton:{
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Logging In...");
progressDialog.show();//FOLLOWING METHOD NOT WORKING...
Backendless.UserService.login("email", password, new AsyncCallback<BackendlessUser>() {
public void handleResponse(BackendlessUser user) {
Toast.makeText(getActivity(), "Logged In!", Toast.LENGTH_LONG).show();
SharedPreferences myPrefs = getActivity().getSharedPreferences(PREFS_LOGGED_IN, 0);
SharedPreferences.Editor editor = myPrefs.edit();
editor.putBoolean("isLoggedIn", true);
editor.commit();
}
public void handleFault(BackendlessFault fault) {
Toast.makeText(getActivity(), "No Name", Toast.LENGTH_LONG).show();
}
});
}
break;
}
发布于 2016-02-14 19:37:22
用于login()
的Backendless
方法需要一个String
作为第二个参数。你在给它传递一个EditText
。您必须从EditText
中提取值。将password.getText().toString()
作为login()
方法的第二个参数。
而且,在实际发送值之前检查EditText中的空值是一种很好的做法。所以一定要做那些检查。
发布于 2016-02-14 19:53:46
由于这个网站提到了登录方法语法如下所示:
public void Backendless.UserService.login( String login,
String password,
AsyncCallback<BackendlessUser> callback );
public void Backendless.UserService.login( String login,
String password,
boolean stayLoggedIn,
AsyncCallback<BackendlessUser> callback );
您正在传递一个EditText
而不是一个String
。因此,将其替换为:
Backendless.UserService.login("email", password, new AsyncCallback<BackendlessUser>() {
public void handleResponse(BackendlessUser user) {
Toast.makeText(getActivity(), "Logged In!", Toast.LENGTH_LONG).show();
SharedPreferences myPrefs = getActivity().getSharedPreferences(PREFS_LOGGED_IN, 0);
SharedPreferences.Editor editor = myPrefs.edit();
editor.putBoolean("isLoggedIn", true);
editor.commit();
}
public void handleFault(BackendlessFault fault) {
Toast.makeText(getActivity(), "No Name", Toast.LENGTH_LONG).show();
}
});
在这方面:
Backendless.UserService.login("email", password.getText().toString(), new AsyncCallback<BackendlessUser>() {
public void handleResponse(BackendlessUser user) {
Toast.makeText(getActivity(), "Logged In!", Toast.LENGTH_LONG).show();
SharedPreferences myPrefs = getActivity().getSharedPreferences(PREFS_LOGGED_IN, 0);
SharedPreferences.Editor editor = myPrefs.edit();
editor.putBoolean("isLoggedIn", true);
editor.commit();
}
public void handleFault(BackendlessFault fault) {
Toast.makeText(getActivity(), "No Name", Toast.LENGTH_LONG).show();
}
});
希望能帮上忙!
https://stackoverflow.com/questions/35397105
复制相似问题