Android 编辑文本赢得';不要在操作杆中充气
我正在尝试使用以下代码将EditText充气到操作栏中Android 编辑文本赢得';不要在操作杆中充气,android,Android,我正在尝试使用以下代码将EditText充气到操作栏中 public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub getMenuInflater().inflate(R.menu.main , menu); !! MenuItem mi = menu.getItem(R.id.item2);
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.main , menu);
!! MenuItem mi = menu.getItem(R.id.item2);
!!EditText et = (EditText) MenuItemCompat.getActionView(mi).findViewById(R.id.editText1);
et.setOnEditorActionListener(this);
return super.onCreateOptionsMenu(menu);
注:标有!!正在导致应用程序崩溃。
我用的是minSdk 8
或者,您可以尝试添加操作视图尝试使用类(
(MenuItem)
)强制转换菜单项
),使用findItem
方法并使用膨胀的视图
检索编辑文本
,如下所示:
// cast the menu item
MenuItem mi = (MenuItem) menu.findItem(R.id.item2);
// Use an inflated view
View view = (View) MenuItemCompat.getActionView(mi);
// Retrieve the edittext
EditText et = (EditText) view.findViewById(R.id.editText1);
简而言之,作为您的代码,它可能会通过以下代码恢复:
MenuItem mi = (MenuItem) menu.getItem(R.id.item2);
EditText et = (EditText) ( (View) MenuItemCompat.getActionView(mi) ).findViewById(R.id.editText1);
确保在oncreateoptions菜单中返回true
,而不是super
方法。
最后,还要确保项目使用如下自定义前缀:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:customapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/item2"
customapp:showAsAction="always|collapseActionView"
customapp:actionLayout="@layout/layout_edittext" ... />
</menu>
我尝试了你的两种方法。但是它仍然像以前一样崩溃,在LogCat中出现同样的错误。也许@Saad您在菜单项中忘记了自定义前缀。请参阅我的最新答案。如果这不起作用,在你的问题中加入日志可能会很有用。我没有用actionLayout添加自定义前缀。上帝android中的一切每天都在变化。不客气;)而且它不会每天都改变。。我是说。。几乎但是,在(第三段代码片段,特别是“支持库”部分中的“使用XML属性”)中提到了这种行为。如果您只是在自定义操作栏布局中将侦听器添加到视图中并使用它们,而忘记了OnCreateOptions菜单,会怎么样。我只是问你,那会不会按你想要的方式工作。你只想在actionbar中添加视图,然后开始与之交互。当你不能以一种可以完成的方式完成一件事情时,它会让你感到不舒服。不过,谢谢,这很有帮助。我确实解决了我的问题
MenuItem mi = (MenuItem) menu.getItem(R.id.item2);
EditText et = (EditText) ( (View) MenuItemCompat.getActionView(mi) ).findViewById(R.id.editText1);
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:customapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/item2"
customapp:showAsAction="always|collapseActionView"
customapp:actionLayout="@layout/layout_edittext" ... />
</menu>