2016-02-12 3 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()", когда я нажимаю "UNDO" на моей панели действий.

Однако он показывает ошибку ниже: enter image description here

Я попытался с помощью «андроида: OnClick =» onRewrite»на обычную кнопку и он может начать этот метод Почему не запускается.„OnRewrite“в этот случай?

+0

Сообщите мне свой результат. – saeed

ответ

2

почему его шоу ошибка?

вы должны создать метод с параметром View, как onRewrite(View v) и вы пытаетесь вызвать без параметра, почему он показывает вам это сообщение.

удалить параметр из метода. как показано ниже

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

Я попытался с помощью "Android: OnClick =" onRewrite»на обычной кнопки и может запустить этот метод

why its working?


.

хотите использовать способ работать в обоих случаях. Создать два метода с такими же па я & использование такой же код внутри это.

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

другое решение создать нажатие кнопки в деятельности и удалить android:onClick="onRewrite из layout.xml, вызовите onRewrite() от события щелчка, а также от onOptionsItemSelected

+0

Спасибо за понимание: сейчас он работает –

2

Изменить код активности

ошибку, потому что вы вызываете метод On onRewrite() без параметра

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

Надеюсь, это вам поможет

Смежные вопросы