Coder Social home page Coder Social logo

Comments (14)

keyboardsurfer avatar keyboardsurfer commented on August 30, 2024

A workaround is to call Crouton.clearCroutonsForActivity(this); within onDestroy of your activity like so:

  protected void onDestroy() {
    Crouton.clearCroutonsForActivity(this);
    super.onDestroy();
  }

from crouton.

SebastianEngel avatar SebastianEngel commented on August 30, 2024

Concerning the workaround: If I create and show a Crouton (default usage) in a Fragment, should I anyway use the onDestroy() method of the activity or the one of the fragment?

from crouton.

keyboardsurfer avatar keyboardsurfer commented on August 30, 2024

If you show it within the Fragment, calling it in the Fragment's onDestroy() is the best solution.

from crouton.

SebastianEngel avatar SebastianEngel commented on August 30, 2024

If by "show it" you mean calling the "show()" method, yes I do it in the fragment. But if you mean where I show it in the layout hierarchy, I am not sure.

I call the following from within my fragment:

Crouton.makeText(getSherlockActivity(), "...", Style.ALERT).show();

Since I do not attach the crouton to a certain view of the fragment layout explicitly, I guess it is attached onto the activity. Therefore I ask myself if the fragment's or the activity's "onDestroy()" should be used. Does it depend on where "show()" was called from (activity or fragment), or to which view (activity, or explicit view in fragment layout) the crouton is attached to?

from crouton.

keyboardsurfer avatar keyboardsurfer commented on August 30, 2024

Sorry, my answer was not clear. If you have attached a Crouton to a Fragment's ViewGroup you want to call Crouton.clearCroutonsForActivity(getActivity());.

It does not matter where the show() method is being called, but only where your Crouton is attached.

from crouton.

chrisjenx avatar chrisjenx commented on August 30, 2024

Please remember as of HC3.2+ orientation changes do not destroy and recreate activities. So although this may be a work around pre 3.2. It probably wont work on newer devices.

from crouton.

SebastianEngel avatar SebastianEngel commented on August 30, 2024

Thanks a lot.

from crouton.

keyboardsurfer avatar keyboardsurfer commented on August 30, 2024

Using ActivityLifecycleCallbacks solves the issue for API 14+.

from crouton.

alosdev avatar alosdev commented on August 30, 2024
  1. you should hold a weak reference to the activity and when it is destroyed, to can remove them.
  2. Check the queue if the croutons is context sensitive, so crouton on top, which cannot be displayed should be ignored and the next should be handled.

from crouton.

someonestolemyusername avatar someonestolemyusername commented on August 30, 2024

In my testing, I found that calling Crouton.cancelAllCroutons(); is very important. I had an Android app running on 2.3 Genymotion, and if I opened a crouton then clicked a button that opened a web site, the phone would navigate back out of the web browser into the app to display the crouton finishing animation where it pops back up and disappears.

from crouton.

keyboardsurfer avatar keyboardsurfer commented on August 30, 2024

That sounds rather odd. I have not ever experienced something like this. Does it happen with Android versions higher than Gingerbread as well?

from crouton.

dotfeng avatar dotfeng commented on August 30, 2024

when startActivity(), better to use

@Override
protected void onStop() {
    super.onStop();
    Crouton.clearCroutonsForActivity(this);
}

from crouton.

emezias avatar emezias commented on August 30, 2024

Note there is a Concurrency issue when following this direction. If placed in onDestroy, Crouton.cancelAllCroutons() can cancel any croutons that are supposed to be showing in the next activity. Better advice is to clear for the activity, as above and save CancelAll for an application ending action

from crouton.

keyboardsurfer avatar keyboardsurfer commented on August 30, 2024

See README for further info.

from crouton.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.