В ответ на ваш вопрос есть ряд проблем, которые вызывают описанную вами сложность. Позвольте сначала сказать, что вам не нужно делать что-то определенным образом, при условии, что вы идете на уступки для определенных вещей. Android является очень гибкой платформой и Java, так как язык ООП позволяет вам делать то, чего не делают многие языки, кроме ООП.
Всякий раз, когда вы создаете «кликабельный» элемент, такой как Button
, если вы хотите, чтобы ваша программа отвечала, вы должны что-то «слушать». Это известно как Слушатель. В вашем случае вы ищете OnClickListener
. OnClickListener
действительно не обязательно должно быть частью Activity
обязательно. Это просто должно быть class
, что implements View.OnClickListener
. Затем вы должны сообщить setOnClickListener()
методу Button
, кто его слушатель. В следующем примере показано, что необходимо без вашего объявления в XML (но это важно).
class Menu extends Activity implements View.OnClickListener
{
public void onCreate(Bundle icicle)
{ setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.BUTTON_ID_AS_DEFINED_BY_YOUR_XML);
btn.setOnClickListener(this);
}
public void onClick(View view)
{ int id = view.getId();
if (id == R.id.BUTTON_ID_AS_DEFINED_BY_YOUR_XML)
updateLayout()//Do your Click event here
}
public void updateLayout()
{ //updateLayout code...
}
}
Что-то, что нужно отметить, это OnClick()
выше. Каждый OnClickListener
должен использовать ту же сигнатуру, что и OnClick()
. Это означает, что он должен иметь одинаковый возврат и одинаковые аргументы, даже если у него другое имя. Для того, что вы пытаетесь сделать (в XML), вы установили android:OnClick
на updateLayout
. Это означает, что `updateLayout () должен быть объявлен следующим образом:
public void updateLayout(View view)
Теперь, чтобы метод обновления действительно работал: пока вы предоставляете свой код, мы фактически не знаем, какие ошибки вы получаете. Решить проблему всегда намного проще, если у нас есть копия выходных данных Logcat, в которую входит полученная вами ошибка. После того, как у нас есть, мы можем нацелить вашу ошибку конкретно, и я могу отредактировать свой ответ, включив в него то, что вам может понадобиться дополнительно.
FuzzicalLogic