Android - 如何将 id 添加到工具栏后退按钮?
Android - How to add id to Toolbar back button?
出于自动化测试目的,我需要将 ID 添加到工具栏的 BACK / MENU 按钮视图。
我尝试使用 getChildAt
和 setId
添加 id,但是当我检查视图层次结构时,id 仍然没有设置。 android.R.id.home
菜单 ID 在我的情况下不起作用。当我使用 Layout inspector 检查视图层次结构时,我需要为视图设置的 id。只有这样,该 ID 才能用于自动化 UI 测试。
你能推荐一种方法吗?
工具栏的 BACK / MENU 按钮已经有 id android.R.id.home
你可以使用这个 id
根据代码
对该用途执行操作
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
Toast.makeText(context, "Backarrow pressed", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
将此代码添加到 activity
的底部
@Override
public void onBackPressed() {
super.onBackPressed();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_menuname, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Ward/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
}
我可以通过搜索 AppCompatImageButton
并设置第一个找到的视图的 ID 来将 ID 添加到工具栏后退按钮。在设置 actionBar 之后执行此操作很重要。
private void addIdToBackButton() {
for (int i = 0; i < toolbar.getChildCount(); i++) {
View child = toolbar.getChildAt(i);
if (child instanceof AppCompatImageButton) {
child.setId(R.id.toolbar_back_button);
return;
}
}
}
private void setUpActionBar() {
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Title");
actionBar.setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(__ -> onBackPressed());
addIdToBackButton();
}
出于自动化测试目的,我需要将 ID 添加到工具栏的 BACK / MENU 按钮视图。
我尝试使用 getChildAt
和 setId
添加 id,但是当我检查视图层次结构时,id 仍然没有设置。 android.R.id.home
菜单 ID 在我的情况下不起作用。当我使用 Layout inspector 检查视图层次结构时,我需要为视图设置的 id。只有这样,该 ID 才能用于自动化 UI 测试。
你能推荐一种方法吗?
工具栏的 BACK / MENU 按钮已经有 id android.R.id.home
你可以使用这个 id
根据代码
对该用途执行操作 @Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
Toast.makeText(context, "Backarrow pressed", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
将此代码添加到 activity
的底部@Override
public void onBackPressed() {
super.onBackPressed();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_menuname, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Ward/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
}
我可以通过搜索 AppCompatImageButton
并设置第一个找到的视图的 ID 来将 ID 添加到工具栏后退按钮。在设置 actionBar 之后执行此操作很重要。
private void addIdToBackButton() {
for (int i = 0; i < toolbar.getChildCount(); i++) {
View child = toolbar.getChildAt(i);
if (child instanceof AppCompatImageButton) {
child.setId(R.id.toolbar_back_button);
return;
}
}
}
private void setUpActionBar() {
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Title");
actionBar.setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(__ -> onBackPressed());
addIdToBackButton();
}