2016-02-12 25 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); 
    } 

希望這會幫助你