Кнопка навигации вверх не работает в базовом приложении Android без специальной панели инструментов.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Кнопка навигации вверх не работает в базовом приложении Android без специальной панели инструментов.

Сообщение Anonymous »

У меня проблема с кнопкой ВВЕРХ на панели инструментов приложения, которая никогда не передает R.id.home в методе onOptionsItemSelected при нажатии в дочернем действии.
Основное действие

Код: Выделить всё

package com.foocorp.firstapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class InstrumentListActivity extends AppCompatActivity
implements IUdpNotificationListener
{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_my);

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_my, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_settings) {
return true;
}
if (id == R.id.home) {
Toast.makeText(getApplicationContext(), "Clicked Menu back from Main", Toast.LENGTH_SHORT).show();
finish();
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {

Toast.makeText(getApplicationContext(), "Clicked Hard back from Main", Toast.LENGTH_SHORT).show();
finish();
}
}
Дочернее действие, в котором я установил setDisplayHomeAsUpEnabled(true);

Код: Выделить всё

package com.foocorp.firstapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class InstrumentViewDetailsActivity extends AppCompatActivity implements IUdpNotificationListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_instrument_view_details);

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Intent intent = getIntent();

//whatever here
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_instrument_view_details, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_settings) {
return true;
}
//=> never get called because passed ID is never R.id.home
if (id == R.id.home) {
Toast.makeText(getApplicationContext(), "Clicked Menu back from Details", Toast.LENGTH_SHORT).show();
finish();
return true;
}

return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {

Toast.makeText(getApplicationContext(), "Clicked Hard back from Details", Toast.LENGTH_SHORT).show(); // this works fine
finish();
}

}
Файл манифеста, в котором определено отношение «родитель-потомок»: Файл макета меню дочерней активности (кстати, это нормально, что кнопка ВВЕРХ здесь не определена, хотя она появляется при запуске приложения?) При поиске в Интернете этого решения я нашел советы об отношении родительского/дочернего элемента в файле манифеста и getSupportActionBar().setHomeButtonEnabled(true); но, несмотря на эти подсказки, я не могу заставить эту кнопку на панели инструментов UP работать должным образом: она ДЕЙСТВИТЕЛЬНО возвращается к родительской активности, НО не так, как когда я нажимаю кнопку «Назад», которая вызывает onBackPressed() и который отлично работает.
Есть какие-нибудь сведения о том, чего мне здесь не хватает?

Подробнее здесь: https://stackoverflow.com/questions/324 ... t-custom-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»