Действие не открывается при нажатии на пункт меню - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь нажать на опцию выхода из системы, идентификатор которой - выход, но ничего не происходит. Ниже мой код

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

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()){
        case R.id.logout:
            Intent intent=new Intent(this,Logout.class);
            this.startActivity(intent);
            break;
    }
    return super.onOptionsItemSelected(item);
}

помогите пожалуйста

Ответы [ 4 ]

0 голосов
/ 30 мая 2020

Если вы связываете переопределенный метод с его суперклассом (т.е. вызываете super.someMethod()), это означает, что вы запрашиваете суперкласс для обработки реализации самостоятельно.
Вы должны return true здесь, чтобы сообщить, что вы успешно надули menu в этом потомке Activity ИЛИ успешно обработал событие onClick() в элементах опций .


ПРИМЕЧАНИЕ: В основном, вам нужно связать вызов метода superclass, где superclass отвечает за выполнение некоторых важных вещей. Например:

public class ChildActivity extends AppCompatActivity{
@Override
    protected void onCreate(Bundle savedInstanceState) {
        //request superclass to do its critical stuffs
        super.onCreate(savedInstanceState);

        //continue with your logics here
}
0 голосов
/ 30 мая 2020

в методе onCreateOptionsMenu замените

return super.onCreateOptionsMenu(menu);

на

return true;

и замените super.onOptionsItemSelected(item); в onOptionsItemSelected() на return true

0 голосов
/ 30 мая 2020

Вы должны вернуть истину в onCreateOptionsMenu() и onOptionsItemSelected() после начала действия.

Правильный способ будет таким.

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

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()){
        case R.id.logout:
            Intent intent=new Intent(this,Logout.class);
            this.startActivity(intent);
            return true;
    }
    return super.onOptionsItemSelected(item);
}
0 голосов
/ 30 мая 2020

Перезапустить Android студию. Дайте мне знать, если это все еще сохраняется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...