Я работаю над настройками экранов для андроида.Кнопка назад на панели инструментов Android не распознается
Экран настроек содержит 2 «вспомогательные экраны», обе имеют панель инструментов и имеют кнопку «Назад».
Задняя кнопка на экране 1, не делает ничего Кнопка возврата на экран 1 отлично работает и возвращает меня к главному экрану настроек («жестких» назад кнопка работает для обоих экранов)
Экран 1 (Настройки экрана):
экран 1 XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_preferences"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.clear.pocketcross.Preferences">
<Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/colorPrimary"
android:popupTheme="@android:style/ThemeOverlay.Material.Light"
android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<Switch
android:id="@+id/counterscroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:defaultValue="true"
android:key="counter_scroll"
android:shadowColor="@color/gradient_mid"
android:shadowDx="5"
android:shadowDy="5"
android:text="@string/scrollCounters"
android:thumb="@drawable/pocketcross_btn_radio_on_holo_light" />
<Switch
android:id="@+id/navswipe"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:defaultValue="true"
android:key="nav_swipe"
android:shadowColor="@color/gradient_mid"
android:shadowDx="5"
android:shadowDy="5"
android:text="@string/swipeTitle"
android:thumb="@drawable/pocketcross_btn_radio_on_holo_light" />
</LinearLayout>
</RelativeLayout>
Java для экрана 1 :
Switch nav;
Switch scroll;
SharedPreferences shared;
public static final String MyPREFERENCES = "PocketCross";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preferences);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//Toolbar will now take on default Action Bar characteristics
setActionBar(toolbar);
getActionBar().setDisplayHomeAsUpEnabled(true);
this.setTitle("Preferences");
nav = (Switch) findViewById(R.id.navswipe);
scroll = (Switch) findViewById(R.id.counterscroll);
if (shared == null) {
shared = this.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
}
nav.setChecked(shared.getBoolean("nav_swipe", true));
scroll.setChecked(shared.getBoolean("counter_scroll", true));
nav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor spEdit = shared.edit();
spEdit.putBoolean("nav_swipe", isChecked);
spEdit.apply();
}
});
scroll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor spEdit = shared.edit();
spEdit.putBoolean("counter_scroll", isChecked);
spEdit.apply();
}
});
}
Экран 2 (Карманные Перекрестные Параметры экрана):
XML для экрана 2:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parametersTable"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:shrinkColumns="*"
android:stretchColumns="*"
android:background="@color/background"
android:clickable="false">
<Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/colorPrimary"
android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar"
android:popupTheme="@android:style/ThemeOverlay.Material.Light" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/parametersList"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_below="@+id/toolbar" />
</RelativeLayout>
Java для экрана 2: -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paramaters);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//Toolbar will now take on default Action Bar characteristics
setActionBar(toolbar);
getActionBar().setDisplayHomeAsUpEnabled(true);
this.setTitle(R.string.parametersTitle);
mntFile = MainMenu.mntFile;
fileData = xmlTools.getXmlFile(mntFile);
tags = fileData.xmlTags;
for (int i = 0; i < tags.size(); i++) {
tag = tags.get(i);
if (tag.nodeTag.equalsIgnoreCase("PocketCrossSysParam")) {
nodes = tag.nodeData;
paramSetting = xmlTools.getNodeFromList(nodes, "ParamName");
paramValue = xmlTools.getNodeFromList(nodes, "ParamValue");
parameter = new PocketCrossParameter(paramSetting,paramValue);
parameters.add(parameter);
}
}
loadParams();
}
(lo AdParams является функцией, чтобы получить различные параметры из файла XML)
Я попытался добавить следующее к моему коду, но все же кнопку назад ничего не делает: -
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
То, что я изо всех сил, чтобы понять, почему кнопка «Назад» на каждом отдельном экране в моем приложении прекрасно работает, кроме этого.
Я предполагаю, что это будет что-то очевидное, но я понятия не имею, что.
Вы пытались удалить андроид: clickable = "false" из RelativeLayout?(И вы можете удалить android: shrinkColumns and android: stretchColumns тоже из-за свойств TableLayout) – MatPag
@MatPag 'android: clickable = "false"' только на экране 2. Экран 2 работает правильно. это экран 1, который не работает. – Nik