0

我是android新手,并使用此代码,而当我试图打开此活动它给我的错误。 代码:启动无法在Android中使用Activity扩展的类中实现LoaderManager?

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

有在Android的2个LoaderManager实现(一个默认的和其他的支持库)。它们是:

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; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.Toast; import com.mrfs.android.surveyapp.R; – Erum

+0

你应该只有其中之一.. v4.app.LoaderManager。 – Erik

+0

是的,你应该只使用android.app。*或android.support.v4.app *。如果在使用LoaderManager时包含这些组合,将不起作用 – R4ng3LII

0

尝试用你的启动装载器:

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

您的活动实现了LoaderCallbacks<List<User>>所以你只需要通过“这个”作为参数,无需投。

+0

所以在您的建议后我得到错误:在这条线的多个标记 \t - LoaderManager类型中的initLoader(int,Bundle,LoaderManager.LoaderCallbacks )方法不适用于参数 \t(int,null,LoginActivityService) – Erum

+0

清单中的min sdk版本是什么?如果我使用导入android.content.Loader,我不会得到那个编译错误; import android.app.LoaderManager; minSdkVersion至少为11。 – NigelK

+0

Erum

相关问题