Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 编辑文本赢得';不要在操作杆中充气_Android - Fatal编程技术网

Android 编辑文本赢得';不要在操作杆中充气

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);

我正在尝试使用以下代码将EditText充气到操作栏中

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

  • 将android支持v7 appcompat库项目添加到您的项目中
  • 在清单文件中的活动条目中将属性主题的值更新为android:theme=“@style/theme.AppCompat.Light”
  • 根据需要为自定义操作栏创建布局资源

    自定义_action_bar.xml


  • 或者,您可以尝试添加操作视图

    尝试使用类(
    (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>