Android/java. Команда Toast: ошибка: "non-static method"
При добавлении метода
Toast.setGravity(Gravity.TOP, 0, 0);
для двух кнопок, возникает ошибка:
"non-static method setGravity(int,int,int) cannot be referenced from a static context".
Насколько понимаю, ошибка возникает из-за того, что класс Toast необходимо создать через new и присвоить класс static? Если так, то как это можно будет правильно оформить для двух кнопок?
package com.bignerdranch.android.geoquiz;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button mTrueButton;
private Button mFalseButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTrueButton = (Button) findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,
R.string.correct_toast,
Toast.LENGTH_SHORT).show();
Toast.setGravity(Gravity.TOP, 0, 0);
}
});
mFalseButton = (Button) findViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT).show();
Toast.setGravity(Gravity.TOP, 0, 0);
}
});
}}
Ответы (1 шт):
Toast toast = Toast.makeText(
MainActivity.this,
R.string.incorrect_toast,
Toast.LENGTH_SHORT
);
toast.setGravity(Gravity.TOP, 0, 0);
toast.show();
Метод Toast.makeText() является статическим и он же вам возвращает объект класса Toast. Методы кастомизации Toast вроде setGravity() статическими не являются и они должны вызываться только у конкретных экземпляров класса.
Все что вам необходимо это не вызывать сразу метод show(), а присвоить ваш Toast переменной. Потом произвести с вашей переменной нужные вам настройки и вызвать уже ниже метод show() как в примере выше.