onOptionsItemSelected ActionBarActivity 不遵守 false return
onOptionsItemSelected ActionBarActivity doesn't respect false return
我在 ActionBarActivity
:
中有一些代码看起来像这样
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent returnIntent = new Intent();
if (isNameNull()) {
namePicker.setError(getString(R.string.warning_name_should_not_be_empty));
Log.d(TAG, "child name is empty");
return false;
}
}
return super.onOptionsItemSelected(item);
}
这段代码只是为了在 EditText 中显示一个错误。当我使用 FragmentActivty
时它工作正常。但是当我使用 ToolBar 切换到 ActionBarActivity
时,此代码显示错误并导航回父 activity。这可能是 ActionBarActivity
中的错误。任何解决方法?覆盖 onMenuItemSelected(int featureId, MenuItem item)
不起作用,因为它已在 ActionBarActivity
.
中完成
对于 ActionBarActivity
,您可以覆盖 onSupportNavigateUp() 以在按下向上按钮时执行自定义行为,而不是在 onOptionsItemSelected()
中处理它:
@Override
public boolean onSupportNavigateUp() {
if (isNameNull()) {
namePicker.setError(getString(R.string.warning_name_should_not_be_empty));
Log.d(TAG, "child name is empty");
return false;
}
return super.onSupportNavigateUp();
}
根据关于该方法 return 值的 Javadoc:
returns true
if Up navigation completed successfully and this Activity was finished, false
otherwise.
我在 ActionBarActivity
:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent returnIntent = new Intent();
if (isNameNull()) {
namePicker.setError(getString(R.string.warning_name_should_not_be_empty));
Log.d(TAG, "child name is empty");
return false;
}
}
return super.onOptionsItemSelected(item);
}
这段代码只是为了在 EditText 中显示一个错误。当我使用 FragmentActivty
时它工作正常。但是当我使用 ToolBar 切换到 ActionBarActivity
时,此代码显示错误并导航回父 activity。这可能是 ActionBarActivity
中的错误。任何解决方法?覆盖 onMenuItemSelected(int featureId, MenuItem item)
不起作用,因为它已在 ActionBarActivity
.
对于 ActionBarActivity
,您可以覆盖 onSupportNavigateUp() 以在按下向上按钮时执行自定义行为,而不是在 onOptionsItemSelected()
中处理它:
@Override
public boolean onSupportNavigateUp() {
if (isNameNull()) {
namePicker.setError(getString(R.string.warning_name_should_not_be_empty));
Log.d(TAG, "child name is empty");
return false;
}
return super.onSupportNavigateUp();
}
根据关于该方法 return 值的 Javadoc:
returns
true
if Up navigation completed successfully and this Activity was finished,false
otherwise.