Android backfundle.Com-片段中的异步登录
我正在使用backfundle.com作为我的应用程序的后端。我需要在一个片段中登录我的用户。我一直收到一个语法错误,指出backfundle.com提供的异步登录方法无法识别。它在一个活动中工作得非常好。有人知道如何让它在片段中工作吗?以下是错误的屏幕截图: 以下是我的片段的代码:Android backfundle.Com-片段中的异步登录,android,android-fragments,backendless,Android,Android Fragments,Backendless,我正在使用backfundle.com作为我的应用程序的后端。我需要在一个片段中登录我的用户。我一直收到一个语法错误,指出backfundle.com提供的异步登录方法无法识别。它在一个活动中工作得非常好。有人知道如何让它在片段中工作吗?以下是错误的屏幕截图: 以下是我的片段的代码: public class LoginFragment extends Fragment implements View.OnClickListener { private FragmentTransaction
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;
}
公共类LoginFragment扩展片段实现View.OnClickListener{
私人碎片交易;
专用按钮注册表按钮、重置按钮、登录按钮;
编辑文本用户名、密码;
私有布尔函数;
BackendlessUser userOne=新的BackendlessUser();
私有静态最终字符串PREFS_LOGGED_IN=“AreYouLoggedInFile”;
公共OnClickedListener;
公共登录接口loggedInListener;
静态接口OnClickedListener{
点击公共作废按钮(视图五);
}
静态接口登录接口{
public void userLoggedIn(布尔loggedIn);
}
@凌驾
公共事务主任(活动){
超级转速计(活动);
this.listener=(OnClickedListener)活动;
this.loggedInListener=(LogInInterface)活动;
}
公共登录片段(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u输入\状态\始终\隐藏);
isPopUpOpen=false;
如果(savedInstanceState!=null){
if(savedInstanceState.getBoolean(“isDialogOpen”)){
重置PopupWindow();
}
}
视图=充气机。充气(R.layout.fragment\u登录,容器,false);
registerButton=(按钮)view.findViewById(R.id.register_按钮);
resetButton=(按钮)view.findViewById(R.id.reset\u按钮);
password=(EditText)view.findViewById(R.id.fragment\u login\u password);
userName=(EditText)view.findViewById(R.id.fragment\u login\u userName);
loginButton=(按钮)view.findviewbyd(R.id.fragment\u login\u loginButton);
registerButton.setOnClickListener(这个);
resetButton.setOnClickListener(此);
setOnClickListener(这个);
返回视图;
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.注册按钮:{
监听器。按钮点击(v);
打破
}
案例R.id.reset_按钮:{
isPopUpOpen=true;
重置PopupWindow();
打破
}
案例R.id.fragment\u login\u login按钮:{
final ProgressDialog ProgressDialog=新建ProgressDialog(getActivity());
progressDialog.setMessage(“登录…”);
progressDialog.show();//以下方法不起作用。。。
backhandle.UserService.login(“电子邮件”、密码、新AsyncCallback(){
public void handleResponse(后端用户){
Toast.makeText(getActivity(),“登录!”,Toast.LENGTH_LONG.show();
SharedReferences myPrefs=getActivity().GetSharedReferences(已登录的PREFS,0);
SharedReferences.Editor=myPrefs.edit();
编辑器.putBoolean(“isLoggedIn”,true);
commit();
}
公共无效手柄故障(后端故障故障){
Toast.makeText(getActivity(),“No Name”,Toast.LENGTH_LONG.show();
}
});
}
打破
}
用于backfundle
的login()
方法需要一个字符串作为第二个参数。您正在向它传递一个EditText
。您必须从EditText
中提取值。Dopassword.getText().toString()
作为login()
方法的第二个参数
而且,在实际发送值之前检查EditText中的空值是一种很好的做法。因此,请确保执行这些检查。登录()backfundle
方法需要一个String
作为第二个参数。您正在向它传递一个EditText
。您必须从EditText
中提取值。Dopassword.getText().toString()
作为login()
方法的第二个参数
而且,在实际发送值之前检查EditText中的空值是一种很好的做法。因此,请确保进行这些检查。因为这里提到了登录方法语法如下:
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 );
为此:
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();
}
});
backfundle.UserService.login(“email”、password.getText().toString()、new AsyncCallback()){
public void handleResponse(后端用户){
Toast.makeText(getActivity(),“登录!”,Toast.LENGTH_LONG.show();
SharedReferences myPrefs=getActivity().GetSharedReferences(已登录的PREFS,0);
SharedReferences.Editor=myPrefs.edit();
编辑器.putBoolean(“isLoggedIn”,true);
commit();
}
公共无效手柄故障(后端故障故障){
Toast.makeText(getActivity(),“No Name”,Toast.LENGTH_LONG.show();
}
});
希望有帮助!!!因为这里提到的登录方法语法如下:
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 );
为此:
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();
}
});
backfundle.UserService.login(“email”、password.getText().toString()、new AsyncCallback()){
public void handleResponse(后端用户){
Toast.makeText(getActivity(),“登录!”,Toast.LENGTH_LONG.show();
SharedReferences myPrefs=getActivity().GetSharedReferences(已登录的PREFS,0);
SharedReferences.Editor=myPrefs.edit();
编辑器.putBoolean(“isLoggedIn”,true);
编辑公司