Pablo-

ActivityUnitTestCase is extremely limited in its support for
operations that require interfacing with the rest of the system,
because the Activity is never attached to the Activity Manager or the
rest of the runtime.  It may be possible to fix this particular case
(so you can make this call via Instrumentation) in an update but in
the meantime, you will probably find it easier to use
ActivityInstrumentationTestCase - have you tried that?

--Andy


On Thu, Jan 22, 2009 at 12:28 AM, J. Pablo Fernández <pup...@pupeno.com> wrote:
>
> Hello,
>
> In an ActivityUnitTestCase I'm trying to do:
>
>                Activity activity = startActivity(INSERT_INTENT, initialState, 
> null);
>                Bundle outState = new Bundle();
>                getInstrumentation().callActivityOnSaveInstanceState(activity, 
> outState);
>
> But on the save state call I get this trace:
>
> android.util.AndroidRuntimeException: Acquiring SearchManager objects
> only valid in Activity Contexts.
>        at 
> android.app.ApplicationContext.getSearchManager(ApplicationContext.java:976)
>        at 
> android.app.ApplicationContext.getSystemService(ApplicationContext.java:861)
>        at 
> android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:73)
>        at android.app.Activity.getSystemService(Activity.java:3091)
>        at android.app.Activity.performSaveInstanceState(Activity.java:1004)
>        at 
> android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1255)
>        at 
> com.blah.blah.SomeActivityTest.testLoadingAndSavingState(SomeActivityTest.java:90)
>        at java.lang.reflect.Method.invokeNative(Native Method)
>        at 
> android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:136)
>        at 
> android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:126)
>        at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:155)
>        at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:142)
>        at 
> android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:313)
>        at 
> android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1508)
>
> Going through the ApplicationContext source code I've found this
> (http://tinyurl.com/d8qsyc):
>
>    private SearchManager getSearchManager() {
>        // This is only useable in Activity Contexts
>        if (getActivityToken() == null) {
>            throw new AndroidRuntimeException(
>                "Acquiring SearchManager objects only valid in
> Activity Contexts.");
>        }
>        synchronized (mSync) {
>            if (mSearchManager == null) {
>                mSearchManager = new SearchManager(getOuterContext(),
> mMainThread.getHandler());
>            }
>        }
>        return mSearchManager;
>    }
>
> It seems the problem is that the activity token is not set. But here
> I'm puzzled, I don't know where to go next. Any ideas on how to fix it
> or workaround it are appreciated. I want to test that my application
> is saving its state correctly.
>
> Thanks.
> --
> J. Pablo Fernández <pup...@pupeno.com> (http://pupeno.com)
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to