0

Я новичок в android и использовал этот код, когда я пытаюсь открыть эту операцию, давая мне ошибку. КОД:Не удалось реализовать LoaderManager в классе, расширенном с помощью Activity в Android?

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) {} 
} 

ПОКА на старте, если эта деятельность, я получаю сообщение об ошибке:

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

+0

В строке 54 у вас есть проблемы произнесения просто хочу подчеркнуть, что в случае ActivityService.onCreate (LoginActivityService.java:54) 01-23 – Erik

ответ

0

Есть 2 реализаций LoaderManager в Android (один по умолчанию и другие в библиотеку поддержки). Это:

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

Если вы включили неверное, это может привести к исключению classcastexception.

+0

я эти строки: импорт android.app.Activity; import android.app.LoaderManager.LoaderCallbacks; import android.content.Context; import android.os.Bundle; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; импорт android.util.Log; импорт android.view.View; import android.widget.Button; import android.widget.EditText; импорт android.widget.ImageButton; import android.widget.Toast; import com.mrfs.android.surveyapp.R; – Erum

+0

У вас должен быть только один из них. V4.app.LoaderManager. – Erik

+0

Да, вы должны использовать android.app. * OR android.support.v4.app *. Если вы включите их, когда вы используете LoaderManager, не будет работать – R4ng3LII

0

Попробуйте создать свой загрузчик с:

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

Ваша деятельность реализует LoaderCallbacks<List<User>> так что вам просто нужно, чтобы передать «это» в качестве параметра, нет необходимости в гипсе.

+0

поэтому после выполнения ваших предложений я получаю ошибку: несколько маркеров в этой строке \t - Метод initLoader (int, Bundle, LoaderManager.LoaderCallbacks ) в типе LoaderManager не применим для аргументов \t (int, null, LoginActivityService) – Erum

+0

Какова ваша версия min sdk в манифесте? Я не получаю эту ошибку компиляции, если я использую import android.content.Loader; import android.app.LoaderManager; с minSdkVersion не менее 11. – NigelK

+0

Erum