How to display a Dialog inside a View?

Hatox :

I´m new to android-programming and for the first programm I was trying to do a simple Pong-Clone. My programm is stitched together from different how-to´s and the little bit I was able to handle myself.

The baseline: When I press the "play" button it calls my "GameActivity" which sets my "GameView" as its ContentView. Inside the GameView I handle everything from the game, the ball bouncing, the player(s) and the enemy. But my problem is how to get out of it once one player wins.

At first I wanted to simply call a dialog wich asks the player if he wants to play again or go back to the menu, but I cant do anything Activity related of course, because im in the "GameView". If I try to it always tells me I cant because "non-static methods cannot be referenced from a static context".

So my GameActivity is quite simple:



public class GameActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(new GameView(this));


    }
}

At first I simply to put something like this into my View:

        InfoDialog infoDialog = new InfoDialog();
        infoDialog.show(getSupportFragmentManager(), "infoDialog");

But as I said as far as I understood I can´t do that in a View.

TLDR: How can I stop or change the ContentView from my Activity or call a dialog inside that View?

Like I said im very new to Android-programming so sorry if the way that I did this is very convoluted.

dgp :

You can save the context of this activity on the GameView constructor and use it when you need:

class GameView extends View {

    private Context mContext;

    //Constructor
    public GameView (Context context) {
        super(context);
        mContext = context
    }

    //Can be called inside the view
    public ShowDialog() {
        AlertDialog alertDialog = new AlertDialog.Builder(mContext).create();
        alertDialog.setTitle("Alert");
        alertDialog.setMessage("Alert message to be shown");
        alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
        });
        alertDialog.show();
    }
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=359418&siteId=1