繁体   English   中英

Android-如何向工具栏后退按钮添加ID?

[英]Android - How to add id to Toolbar back button?

为了进行自动化测试,我需要在工具栏的“ 后退/菜单”按钮视图中添加ID

我尝试使用getChildAtsetId添加ID,但是在检查视图层次结构时仍未设置ID。 在我的情况下, android.R.id.home菜单ID无效。 当我使用Layout inspector检查视图层次时,需要为视图设置的ID。 只有这样,该ID才能用于自动UI测试。

您能建议一种方法吗?

工具栏的“ 后退/菜单”按钮已具有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;
}

在活动底部添加此代码

@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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM