Меню не отображается

#java #android #android-menu

Вопрос:

Я новичок в студии Android. Я закодировал menu_main.xml файл, в котором все отображается правильно на вкладке «Дизайн», но меню и его компоненты не отображаются после запуска приложения на эмуляторе.

menu_main.xml: введите описание изображения здесь

 <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.guessinggame.MainActivity" >
    <item android:id="@ id/action_settings"
        android:title="Settings" />
    <item
        android:id="@ id/action_newgame"
        android:title="New Game" />
    <item
        android:id="@ id/action_gamestats"
        android:title="Game Stats" />
    <item
        android:id="@ id/action_about"
        android:title="About" />
</menu>
 

MainActivity.java:

 package com.example.guessinggame;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private EditText txtGuess;
    private Button btnGuess;
    private TextView lblOutput;
    private TextView lblRange;
    private int theNumber;
    private int tries;
    int range = 100;

    public void checkGuess() {
        String guessText = txtGuess.getText().toString();
        String message = " ";

        try {
            tries = tries   1;
            int guess = Integer.parseInt(guessText);

            if (guess < theNumber) {
                message = guess   " is too low. Try again.";
            }

            else if (guess > theNumber) {
                message = guess   " is too high. Try again.";
            }
            else {
                    if (tries > 1)
                    message = "You win after "   tries   " tries. "   guess   " is correct.";

                    else
                        message = "You won in "   tries   " try. "   guess   " is correct.";
                newGame();
            }
        }

        catch (Exception e) {
            message = "Enter a number beetwen 1 and "   range  " .";
        }

        finally {
            lblOutput.setText(message);
            txtGuess.requestFocus();
            txtGuess.selectAll();
        }
    }

    public void newGame() {
        tries = 0;
        theNumber = (int)(Math.random() * 100   1);
        lblRange.setText("Enter a number beetwen 1 and "   range  " .");
        txtGuess.requestFocus();
        txtGuess.selectAll();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtGuess = (EditText) findViewById (R.id.txtGuess);
        btnGuess = (Button) findViewById (R.id.btnGuess);
        lblOutput = (TextView) findViewById (R.id.lblOutput);
        lblRange = (TextView) findViewById (R.id.textView2);
        newGame();

        btnGuess.setOnClickListener(new View.OnClickListener() {
            @Override

            public void onClick (View v) {
                checkGuess();
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main, menu);
        return true;
    }

    public boolean onOptionsItemSelected (MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_settings:
                final CharSequence[] items = {"1 to 10", "1 to 100", "1 to 1000"};
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Select the Range: ");
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int item) {
                        switch (item) {
                            case 0:
                                range = 10;
                                newGame();
                                break;
                            case 1:
                                range = 100;
                                newGame();
                                break;
                            case 2:
                                range = 1000;
                                newGame();
                                break;
                        }
                        dialog.dismiss();
                    }
                });
                AlertDialog alert = builder.create();
                alert.show();
                return true;
            case R.id.action_newgame:
                newGame();
                return true;
            case R.id.action_gamestats:
                return true;
            case R.id.action_about:
                AlertDialog aboutDialog = new AlertDialog.Builder(MainActivity.this).create();
                aboutDialog.setTitle("About Guessing Game");
                aboutDialog.setMessage("©2021 XSAVZH");
                aboutDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                aboutDialog.show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}
 

Как вы можете видеть, меню не отображается:
введите описание изображения здесь

Ответ №1:

  <com.google.android.material.appbar.AppBarLayout
 android:id="@ id/Appbar"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="@color/white"
 app:elevation="0dp">
<androidx.appcompat.widget.Toolbar
 android:id="@ id/toolbar"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
</androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout>
 

добавьте панель инструментов в свой XML-файл и в файл .java методом onCreate() добавьте строку ниже. Чем это будет работать.

Панель инструментов панель инструментов = (Панель инструментов) findViewById(R. id.панель инструментов); setSupportActionBar(панель инструментов);

Комментарии:

1. спасибо, я подумаю