2016-02-12 77 views
0

我试图在操作栏上创建一个按钮,该按钮将激活处于同一活动中的方法。从操作栏按钮启动方法时出错

下面是我的菜单的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=".AddContactActivityOCR"> 

    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings" 
     app:showAsAction="never" /> 

    <item 
     android:id="@+id/undo" 
     android:orderInCategory="100" 
     android:title="UNDO" 
     app:showAsAction="always"/> 

</menu> 

下面是我在活动相关代码:

@Override 
    public boolean onCreateOptionsMenu (Menu menu) { 

     getMenuInflater().inflate(R.menu.menu_add_contact_undo, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 

      case R.id.undo: 
       onRewrite(); 
       return true; 

      case android.R.id.home: 
       finish(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 

     } 
    } 

public void onRewrite(View v){ 
     listName.setText(recognizedText); 
     listOwner.setText(recognizedText); 
     companyName.setText(recognizedText); 
     companyAddress.setText(recognizedText); 
     companyNumber.setText(recognizedText); 

     mCurrentLang = mFromLang; 

     validator(recognizedText); 
    } 

我试图启动 “onRewrite()” 当我点击 “撤销”按钮在我的操作栏上。

但是它显示了以下错误: enter image description here

我尝试使用“机器人:的onClick =” onRewrite”在一个普通的按钮,它能够开始这个方法为什么没有启动。‘在onRewrite’这种情况下?

+0

让我知道你的结果。 – saeed

回答

2

为什么它显示错误?

你必须创建方法与参数查看像onRewrite(View v)和你试图把它叫做无参数这就是为什么它向你展示这个信息。

从方法中删除参数。像下面

public void onRewrite(){ .... // your code} 

我尝试使用 “机器人:的onClick =” onRewrite”上一个普通按钮和它 能够启动该方法

why its working?


想要使用方法在两种情况下工作。我&里面使用相同的代码。

public void onRewrite(){ .... // your code} 
public void onRewrite(View v){ .... // your code} 

另一种解决方案是在活动创建按钮,点击从layout.xml删除android:onClick="onRewrite,从点击事件,以及从onOptionsItemSelected

+0

感谢您的见解:)它现在正在工作 –

2

更改活动代码

错误,因为调用onRewrite()你调用的方法On onwrite()无参数

@Override 
    public boolean onCreateOptionsMenu (Menu menu) { 

     getMenuInflater().inflate(R.menu.menu_add_contact_undo, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 

      case R.id.undo: 

       onRewrite(); 

       return true; 

      case android.R.id.home: 
       finish(); 

       return true; 
      default: 
       return super.onOptionsItemSelected(item); 

     } 
    } 

public void onRewrite(){ 
     listName.setText(recognizedText); 

     listOwner.setText(recognizedText); 

     companyName.setText(recognizedText); 

     companyAddress.setText(recognizedText); 

     companyNumber.setText(recognizedText); 

     mCurrentLang = mFromLang; 

     validator(recognizedText); 
    } 

希望这会帮助你