爲了進行自動測試,我需要將ID添加到工具欄的BACK/MENU按鈕視圖。Android - 如何將ID添加到工具欄後退按鈕?
我試圖使用getChildAt
和setId
添加ID,但是當我檢查視圖層次結構時,ID仍未設置。 android.R.id.home
菜單ID在我的情況下不起作用。我需要爲視圖設置的ID,當我使用佈局檢查器檢查視圖層次結構時。只有這樣,id才能用於自動UI測試。
你能提出一種方法來做到這一點?
爲了進行自動測試,我需要將ID添加到工具欄的BACK/MENU按鈕視圖。Android - 如何將ID添加到工具欄後退按鈕?
我試圖使用getChildAt
和setId
添加ID,但是當我檢查視圖層次結構時,ID仍未設置。 android.R.id.home
菜單ID在我的情況下不起作用。我需要爲視圖設置的ID,當我使用佈局檢查器檢查視圖層次結構時。只有這樣,id才能用於自動UI測試。
你能提出一種方法來做到這一點?
我可以通過搜索將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();
}
工具欄的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;
}
我更新了我的問題。可能還不清楚。 –
@MarioKutlev比創建自定義工具欄和設置自定義圖像作爲返回/菜單比您可以分配一個新的ID到該圖像 –
在使用執行行動,在你的活動
的底部添加以下代碼@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;
}
}
我只是建議將有助於建立在XML文件中把'機器人內部繪製文件夾的XML文件:可繪製= 「@繪製/ your_icon」'和'機器人:ID = 「@ + ID/YOUR_ID」'然後使用'getSupportActionBar()。setHomeAsUpIndicator(R.drawable.your_xml_file);'會這樣做嗎? – Yupi
你能告訴我們你是如何設置ID的嗎?它按照我的預期工作。 –