java - Android 中单击按钮内部的 "getLoadingManager.init"启动时出错?

标签 java android asynctaskloader

我正在按钮的 insideOnclick 方法中初始化加载程序,但未能这样做,并且由于传递 "null" 时的倒数第三个参数而出现错误,它在传递 "this"< 时给我错误/strong> 也未能完成工作。

    loginBtn.setOnClickListener(new View.OnClickListener() {
                @Override
            public void onClick(View arg0) {
                    if(userName.getText().length() == 0 || password.getText().length() == 0)
                {
            Toast.makeText(context,"UserName Or Password Should be Filled",Toast.LENGTH_SHORT).show();
            }
        else{
    userName.setText("");
   password.setText("");
   **getLoaderManager().initLoader(1,null,null);** //here is the error 

                    }
                }
                });

            }
             @Override
                public  Loader<User> onCreateLoader(int id,Bundle args) {
                 loginLoader = new LoginLoader(context,userName.getText().toString(),password.getText().toString(),"2013-07-10 01:18:26");
                Log.i("login loader",""+loginLoader);
                 return loginLoader;
                 }

                @Override
                public void onLoadFinished(Loader<User> arg0,User proposals) {
                    Log.i("User",""+proposals.getUsername());
                    }

这是错误列表:

01-27 23:27:33.480: E/AndroidRuntime(7777): FATAL EXCEPTION: main 01-27 23:27:33.480: E/AndroidRuntime(7777): java.lang.NullPointerException 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.app.LoaderManagerImpl.createLoader(LoaderManager.java:544) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:553) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.app.LoaderManagerImpl.initLoader(LoaderManager.java:607) 01-27 23:27:33.480: E/AndroidRuntime(7777): at com.mrfs.android.surveyapp.activities.LoginActivityService$1.onClick(LoginActivityService.java:58) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.view.View.performClick(View.java:4211) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.view.View$PerformClick.run(View.java:17267) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.os.Handler.handleCallback(Handler.java:615) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.os.Handler.dispatchMessage(Handler.java:92) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.os.Looper.loop(Looper.java:137) 01-27 23:27:33.480: E/AndroidRuntime(7777): at android.app.ActivityThread.main(ActivityThread.java:4898) 01-27 23:27:33.480: E/AndroidRuntime(7777): at java.lang.reflect.Method.invokeNative(Native Method) 01-27 23:27:33.480: E/AndroidRuntime(7777): at java.lang.reflect.Method.invoke(Method.java:511) 01-27 23:27:33.480: E/AndroidRuntime(7777): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 01-27 23:27:33.480: E/AndroidRuntime(7777): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 01-27 23:27:33.480: E/AndroidRuntime(7777): at dalvik.system.NativeStart.main(Native Method) *EDIT CODE: LOGIN LIST SERVICE.JAVA*

public class LoginListService 
{
SurveyDBHelper surveyDBHelper;
private final  static  LoginListService INSTANCE = new LoginListService();
public LoginListService()
{}
public static LoginListService getLoginInstance()
{return INSTANCE;
}
public User getLoginResult(String userName, String password,
            String apkVersion) {
        MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
        formData.add("username", "kong");
        formData.add("password", "kongkong");
        formData.add("apkStatusDate", "2013-07-10 01:18:26"); // **HERE IS THE ERROR** 
        System.out.print("form data values:" + formData);
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(
                formData, WorkflowRestService.getInstance().getRequestHeaders());
        ResponseEntity<UserListItemHolder> responseEntity = WorkflowRestService
                .getInstance()
                .getRestTemplate()
                .exchange(WorkflowApp.getServicesURL() + "user/logIn",
                        HttpMethod.POST, requestEntity,
                        UserListItemHolder.class);

        Log.i("response Entity Login", "" + responseEntity);
        UserListItemHolder userListItemInstance = responseEntity.getBody();
        Log.i("response Entity Body Location Function",
                "" + responseEntity.getBody());
        if ("true".equals(userListItemInstance.getApkStatus())) {
Log.i("locationInstance.getLocationListItems if", ""+ userListItemInstance.getUserListItems());
            return userListItemInstance.getUserListItems();


        } else {
Log.i("locationInstance.getLocationListItems else", ""+ userListItemInstance.getUserListItems());
            userListItemInstance = null;
            return userListItemInstance.getUserListItems();
        }

    }

最佳答案

查看您的代码和标记,会出现 NullPointerException ,因为您在 必需 参数的位置传入 null .

getLoaderManager().initLoader(1,null,null); //here is the error

根据LoaderManager Docs需要回调:

参数

  • id 此加载程序的唯一标识符。可以是任何你想要的。标识符的范围限定为特定的 LoaderManager 实例。
  • args 在构造时提供给加载器的可选参数。如果一个 loader已经存在(不需要创建新的),这个 参数将被忽略并继续使用最后一个参数。
  • 回调 LoaderManager 将调用接口(interface)来报告更改 在加载器的状态下。 必填

看起来您已经在实现 LoaderCallbacks,只需将实现传递给 initLoader 方法即可:

getLoaderManager().initLoader(1,null,this);

关于java - Android 中单击按钮内部的 "getLoadingManager.init"启动时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375379/

相关文章:

java - 我在 JMC 中看不到异常详细信息

android - 从 Uri 获取视频缩略图

Android磁传感器给不同设备不同的值

android - Facebook 登录不返回电子邮件 ID

android - AsynLoaderTask 和 ViewPager

Android:如何将 AsyncTaskLoader 添加到此 RecyclerView

android - onCreate 中的方法仅在设备旋转后运行

java - Fragment Android 背后的暗淡和模糊背景

java - Apache Beam GroupByKey 重复事件

java - 如何限制表的大小?