Android (студент CW) нуждается в направлении - PullRequest
1 голос
/ 15 октября 2011
public class Menu extends Activity  {
    /** Called when the activity is first created. */



 public void onCreate(Bundle icicle) {


     //myIntent.setClassName("hello.World", "hello.World.mybuttonclick");
    // myIntent.putExtra("com.android.samples.SpecialValue", "Hello, Joe!"); // key/value pair, where key needs current package prefix.
     //startActivity(myIntent); 

        //Button myButton = (Button) findViewById(R.id.my_button);
        super.onCreate(icicle);


        setContentView(R.layout.main);
    }

 public void updateLayout(){

     Intent myIntent = new Intent(Menu.this, mybuttonclick.class);
     startActivity(myIntent);

    // TextView sayHello = (TextView) findViewById(R.id.Hello);

 }

}

Привет, ребята, я новый ученик по java для Android, и нам нужно разработать простое приложение hello world .. Я испытываю некоторые трудности с тем, чтобы заставить мое действие onClick () работать, используя android: Onclick in xml ..то, что я пытаюсь сделать, это изменить представление контента, отображать просто другой макет и сказать привет. Я использую setContentLayout, чтобы сделать это, каждый раз, когда я нажимаю на упомянутую кнопку, чтобы приложение Android вылетало ... я делаю что-то не так??

С уважением,

Стефан

Ответы [ 3 ]

2 голосов
/ 15 октября 2011

Когда вы устанавливаете прослушиватель кликов в xml, у вас должен быть метод, определенный внутри действия, в котором вы щелкаете. Допустим, вы установили onClick в xml как «buttonClicked», вы должны создать метод, похожий на тот, что показан ниже..

    public void buttonClicked(View view)
    {
          //Your code here
    }

Следует отметить, что метод является публичным пустым пространством только с одним параметром типа View.Определенные XML прослушиватели кликов должны быть такими, чтобы работать.Объект представлений в приведенном выше примере - это вид, по которому щелкнули.

1 голос
/ 15 октября 2011

При обновлении функции макета необходимо прочитать

public void updateLayout(View view)
0 голосов
/ 15 октября 2011

В ответ на ваш вопрос есть ряд проблем, которые вызывают описанную вами сложность. Позвольте сначала сказать, что вам не нужно делать что-то определенным образом, при условии, что вы идете на уступки для определенных вещей. 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...