Search code examples
libgdxtoast

libGDX Toast message


I have tried to use this tutorial:

http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=484#p2959

Firstly have declared private Toast render_toast = new Toast(7, 6);

After that putted render_toast.toaster(); to render.

I would like to use it in show, so I have put this to show():

render_toast.makeText("Game start", "font", Toast.COLOR_PREF.BLUE, Toast.STYLE.ROUND, Toast.TEXT_POS.middle_right, Toast.TEXT_POS.middle_down, Toast.MED);

It isn't working, gives no error message, only stop my application.


Solution

  • Create an interface for required methods in your game. Implement this method in your AndroidLauncher class, using libgdx handler. You can call these methods anywhere in your game for Android related UI.

    You can follow this video for details,

    https://www.youtube.com/watch?v=XxiT3pkIiDQ

    This is how, I used it in my game.

     //Defining interface for customized methods
    public interface AndroidInterfaces {
    
        public void toast(final String t);
    
    }
    
    //implementing the interface in android launcer
    public class AndroidLauncher extends AndroidApplication implements AndroidInterfaces{
    
        final AndroidLauncher context=this;
        @Override
        protected void onCreate (Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();    
            //if (Gdx.input.isPeripheralAvailable(Peripheral.Compass))
              cfg.useCompass = true;
              //cfg.useAccelerometer=true;
            initialize(new MyGame(this), cfg);
        }
    
        @Override
        public void toast(final String t) {
            handler.post(new Runnable()
            {
    
                @Override
                public void run() {
                    //System.out.println("toatsing in launcher run");
                    Toast.makeText(context, t, Toast.LENGTH_SHORT).show();
    
                }
    
            });
    
        }
    }
    
    
    public class MyGame extends Game{
        //16012016
        //16012016 for toast
            AndroidInterfaces aoi;
    
            public MyGame(AndroidInterfaces maoi)
            {
                aoi=maoi;
            }
            public MyGame()
            {
    
            }
          public boolean backpressed=false; //Universal flag to check back button press status , across screens.
           .....
          .....
    }
    
    
    
    public class MainMenuScreen implements Screen{
    
        MyGame game;
        float x,y,w,h,pw,gap;
        float x1,y1;   //coordinates for animation
        //16012016
        boolean toast=false;
        float toasttimer=0;
    
        public MainMenuScreen(MyGame gg) {
            game = gg;
        }
    
        @Override
        public void render(float delta) {           
            //16012016
                    if(toast)
                    {
                        toasttimer=toasttimer+delta;
                    }
                    .....
                    ...//omitted
                //16012016:Toast
                if(toast)
                {
                    if(toasttimer> 2.5)
                        Gdx.app.exit();
                    else if (Gdx.input.isKeyJustPressed(Keys.BACK))  //For double back press exit effect.
                        Gdx.app.exit();
                }
                else if (Gdx.input.justTouched()) {
                game.setScreen(game.STS);  //Setting another screen
            }       
            //16012016
                else if (Gdx.input.isKeyJustPressed(Keys.BACK))
                 if(!game.backpressed)
                    {
                     if(!toast)
                     {
                         toast=true;  //if bsck button is just pressed in current screen then toasting..
                      game.aoi.toast("EXITING.THANKS FOR PLAYING!");  //Not relevant to desktop project, calling implemented method in androind launcher
                     }       
                    }
                                                        }
             else if(game.backpressed)
             {
                 game.backpressed=false;
             }
        }
    
        @Override
        public void resize(int width, int height) {
        }
    
        @Override
        public void show() {
            //16012016
                    toasttimer=0;
                    toast=false;
                    Gdx.graphics.setContinuousRendering(true);  
        }
    
        @Override
        public void hide() {
            Gdx.input.setInputProcessor(null);
        }
    
        @Override
        public void pause() {
        }
    
        @Override
        public void resume() {
        }
    
        @Override
        public void dispose() {
        }
    }