Erum
Erum

Reputation: 790

Failed to implement LoaderManager in class extended with Activity in Android?

I am newbie in android and have used this code while when i am trying to open this Activity its giving me error. CODE:

public class LoginActivityService extends Activity implements LoaderManager.LoaderCallbacks<List<User>>
{  Context context;
   EditText userName,password,version;
   Button logoutBtn;
   LoginLoader loginLoader;
   ImageButton loginBtn;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_view_service);
    context = this;
    userName = (EditText)findViewById(R.id.userName1);
    password = (EditText)findViewById(R.id.password1);
    loginBtn = (ImageButton)findViewById(R.id.login1);
    logoutBtn = (Button)findViewById(R.id.logout1);
    loginBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            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("");
            //HOW CAN I WRITE BELOW LINE INSIDE { } 
            }
        }
        });
    getLoaderManager().initLoader(1, null, (LoaderCallbacks<List<User>>) this);
    }
     @Override
        public Loader<List<User>> onCreateLoader(int id, Bundle args) {
         loginLoader = new LoginLoader(context,userName.getText().toString(),password.getText().toString(),"2013-07-10 01:18:26");
        /* args.putString("username",userName.getText().toString());
         args.putString("password",password.getText().toString());
         args.putString("apkStatusDate","2013-07-10 01:18:26");*/
            return loginLoader;
        }

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

    @Override
        public void onLoaderReset(Loader<List<User>> arg0) {}
}

WHILE on start if this activity i am getting error:

01-23 02:05:32.425: E/AndroidRuntime(20375): FATAL EXCEPTION: main 01-23 02:05:32.425: E/AndroidRuntime(20375): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mrfs.android.surveyapp/com.mrfs.android.surveyapp.activities.LoginActivityService}: java.lang.ClassCastException: com.mrfs.android.surveyapp.activities.LoginActivityService cannot be cast to android.app.LoaderManager$LoaderCallbacks 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.ActivityThread.access$600(ActivityThread.java:140) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.os.Handler.dispatchMessage(Handler.java:99) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.os.Looper.loop(Looper.java:137) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.ActivityThread.main(ActivityThread.java:4898) 01-23 02:05:32.425: E/AndroidRuntime(20375): at java.lang.reflect.Method.invokeNative(Native Method) 01-23 02:05:32.425: E/AndroidRuntime(20375): at java.lang.reflect.Method.invoke(Method.java:511) 01-23 02:05:32.425: E/AndroidRuntime(20375): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 01-23 02:05:32.425: E/AndroidRuntime(20375): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 01-23 02:05:32.425: E/AndroidRuntime(20375): at dalvik.system.NativeStart.main(Native Method) 01-23 02:05:32.425: E/AndroidRuntime(20375): Caused by: java.lang.ClassCastException: com.mrfs.android.surveyapp.activities.LoginActivityService cannot be cast to android.app.LoaderManager$LoaderCallbacks 01-23 02:05:32.425: E/AndroidRuntime(20375): at com.mrfs.android.surveyapp.activities.LoginActivityService.onCreate(LoginActivityService.java:54) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.Activity.performCreate(Activity.java:5206) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083) 01-23 02:05:32.425: E/AndroidRuntime(20375): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 01-23 02:05:32.425: E/AndroidRuntime(20375): ... 11 more

Upvotes: 0

Views: 1457

Answers (2)

NigelK
NigelK

Reputation: 8490

Try initiating your loader with:

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

Your activity implements LoaderCallbacks<List<User>> so you just need to pass 'this' as the parameter, no need for the cast.

Upvotes: 0

R4ng3LII
R4ng3LII

Reputation: 457

There are 2 LoaderManager implementations in Android (one default and other in the support library). These are:

android.app.LoaderManager
android.support.v4.app.LoaderManager

If you included the wrong, it can cause the classcastexception.

Upvotes: 1

Related Questions