क्लिक मैं ActionBar में एक मेनू जो मैं के माध्यम से बनाने के है:एस्प्रेसो मेनू आइटम
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, 98,Menu.NONE,R.string.filter).setIcon(R.drawable.ic_filter_list_white_48dp).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(Menu.NONE, 99,Menu.NONE,R.string.add).setIcon(R.drawable.ic_add_white_48dp).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
और menu_main.xml की तरह दिखता है:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"
android:icon="@drawable/ic_settings_white_48dp"/>
</menu>
जब एस्प्रेसो में परीक्षण मैं पर क्लिक करें चाहते हैं "एड" आइकन (मेनू आईडी 99)। मैंने
@Test
public void testAdd() {
openActionBarOverflowOrOptionsMenu(InstrumentationRegistry.getTargetContext());
onView(withText(R.string.add)).perform(click());
}
लेकिन यह NoMatchingViewException के साथ विफल रहता है। (सेटिंग आइटम, जिसे सीधे एक्सएमएल में परिभाषित किया गया है, मैं उसी कोड के साथ क्लिक कर सकता हूं।)
यह लक्ष्य एसडीकेवर्सन 23 और ऐप कॉम्पैक्टएक्टिविटी के लिए है। उपकरण पट्टी के लिए प्रासंगिक पंक्तियां हैं:
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
if(getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
और tool_bar.xml की तरह दिखता है:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:background="@color/ColorPrimary"
android:elevation="4dp"
tools:ignore="UnusedAttribute">
</android.support.v7.widget.Toolbar>
क्या 'targetSdkVersion', ActionBar और डिवाइस/एम्युलेटर प्रयोग कर रहे हैं ?. OpenActionBarOverflowOrOptionsMenu() कार्यान्वयन (एस्प्रेसो क्लास) देखें, इन कारकों पर निर्भर करता है। मुझे इसकी जांच करने की ज़रूरत है लेकिन मेरे द्वारा उपयोग किए जाने वाले एमुलेटर के आधार पर कुछ गड़बड़ है। – albodelu
targetSdkVersion 23 और AppCompatActivity। मैंने उपरोक्त टूलबार कोड जोड़ा। – user1583209
"withText (R.string.add)" के साथ पाठ मिलान करते समय कोई समस्या हो सकती है, क्योंकि वास्तविक पाठ दिखाई नहीं दे रहा है, लेकिन केवल आइकन (R.drawable.ic_add_white_48dp) दिखाई दे रहा है? – user1583209