2017-01-27 4 views
-2

При установке My на клик слушателя для конкретной кнопки с именем обращенного Когда я пишуПочему мой код ошибки?

код дает красное подчеркивание в пространстве между видом и v

Я новичок в Android Studio и попытался исправить эту проблему с помощью функции поиска в Google, но безрезультатно. Где и как я ошибаюсь?

Редактировать 1: Я разобрал ошибки, по-видимому, это была неуместная фигурная скобка в конце onCreate, эффективно заканчивающая onCreate до того, как был выполнен мой фактический код. Однако теперь он отлично работает, за исключением одного небольшого недостатка, который не показывает выход. Что мне делать?

Код:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    final EditText inputNum = (EditText) findViewById(R.id.inputNum); 
    final TextView octNum = (TextView) findViewById(R.id.octNum); 
    final TextView binNum = (TextView) findViewById(R.id.octNum); 
    final TextView hexNum = (TextView) findViewById(R.id.octNum); 
    final Button convert = (Button) findViewById(R.id.convert); 
    View.OnClickListener listener = new OnClickListener() { 
     @Override 
     public void onClick(final View v) { 
      convert.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        int a = Integer.parseInt(inputNum.getText().toString()); 
        String bin = Integer.toBinaryString(a); 
        String oct = Integer.toOctalString(a); 
        String hex = Integer.toHexString(a); 
        octNum.setText(oct); 
        binNum.setText(bin); 
        hexNum.setText(hex); 
       } 
      }); 


     } 
    }; 
} 

@Override 
public void onClick(View v) { 

} 
+0

Чего вы хотите достичь? добавить слушателя к этому конвертированию? что ваш '' convert' convert.setOnClickListener (новый View.OnClickListener() { @Override общественного недействительный OnClick (View v) { } }); ' –

+0

новообращенное это имя (ID) кнопки. Должен ли я загрузить немного больше кода? –

+0

проверить мой ответ, что вы ищете? –

ответ

2
convert.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // handle your click event 
      } 
     }); 

EDIT

Нажимные кнопки можно нажимать, или нажатии пользователем для выполнения действия!

Типичное использование кнопки в действии будет следующим: .

public class MyActivity extends Activity { 
    protected void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.content_layout_id); 

     final Button button = (Button) findViewById(R.id.button_id); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
     }); 
    } 
} 

Однако вместо применения в OnClickListener к кнопке в вашей деятельности, вы можете назначить метод кнопке в макете XML, используя . Вы пытаетесь добиться чего-то подобного и испортились в setOnClickListener. Ты?

Теперь, когда пользователь нажимает на кнопки, Android системных вызовов (который я создал) метод своей деятельности в myClickMethod(View). Чтобы это сработало, метод должен быть общедоступным и принимать в качестве единственного параметра View. Например:

 <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="myClickMethod" 
     android:text="button" /> 

и в коде

public void myClickMethod(View view) { 
    // Perform action 
} 
+0

Ошибки с включенным кликом исчезли, но приложение по-прежнему падает при запуске на виртуальной машине Android. FATAL EXCEPTION main –

+0

@Suhrid Mulay опубликовать журнал ошибок, чтобы я мог помочь –

+0

Теперь я тестирую приложение на телефоне, чтобы проверить, есть ли какая-то ошибка в AVD. Будет ли обновляться вопрос после завершения теста. –

0

Вы не должны указать тип параметра при вызове метода. Компилятор либо определит это самостоятельно, либо выдает ошибку. В настоящее время AndroidStudio думает, что вы пытаетесь передать два параметра «Вид» и «v», в метод и забыли запятую между ними.

Замените вызов convert.setOnClickListener(v), и сообщение об ошибке станет более четким, т. Е. SetOnClickListener не определяется параметром типа View.

1

U должен предоставить новый экземпляр onClickListener, подобного этому.

convert.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Code here 
     } 
    }); 
Смежные вопросы