#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. спасибо, я подумаю