Связывание кнопок на андроид - PullRequest
1 голос
/ 17 января 2012

Я не могу связать более одной кнопки на странице.Страница в основном имеет заголовок и на 3 кнопки ниже, которые ссылаются на 3 разные темы. Код, который я пробовал (который я нашел на этом сайте), был:

   package com.ICTrevisionapp;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;

    public class topicstoquiz extends Activity {
        /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.topics);}
        public void onClick(View v) {
        {
            Button clickedButton = (Button) v;
            setContentView(0);
            switch(clickedButton.getId())
            {
            case R.id.button2:
                    setContentView(R.layout.topic1);
                Intent myIntent = new Intent (v.getContext(),topicstotopicone.class);
                startActivityForResult(myIntent, 0);
                break;
            case R.id.button3:
                setContentView(R.layout.topic2);
                break;
            }
        }
    }

Часть дела.

Я также попробовал код:

        Intent myIntent = new Intent (view.getContext(),topicstoquiz.class);
        startActivityForResult(myIntent, 0);

, но мне кажется, что я могу получить его только для ссылки на одно действие и только с одной кнопки.

Возможно, я делаю это совершенно неправильноКак мне связать каждую кнопку на странице с отдельным действием, чтобы я мог связать их с другими страницами.(Если это имеет смысл)

Ответы [ 4 ]

2 голосов
/ 17 января 2012

Я предпочитаю идти "в долгий путь" по этому поводу:

В вашем onCreate:Button button2 = (Button)findViewById(R.id.button2); <br /> button2.setOnClickListener(yourListener);

Затем создайте метод слушателя:private OnClickListener yourListener = new OnClickListener(){ <br /> public void onClick(View v){ <br /> Intent yourIntent = new Intent(yourCurrentActivity.this, classYoureNavigatingToo.class); <br/> startActivity(yourIntent); <br /> } <br /> };

Таким образом, вы можете настроить отдельных слушателей для каждой кнопки, указывая на другой класс.Если это поможет, не забудьте пометить как ответ!

Обновление:

public class topicstoquiz extends Activity { <br /> /** Called when the activity is first created. */ <br /> @Override protected void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.topics); <br /> Button button2 = (Button)findViewById(R.id.button2);<br /> Button button3 = (Button)findViewById(R.id.button3);<br /> Button button4 = (Button)findViewById(R.id.button4);<br /> button2.setOnClickListener(button2Listener);<br /> button3.setOnClickListener(button3Listener);<br /> button4.setOnClickListener(button4Listener);<br /> }

Настройте прослушиватели щелчков, как показано выше.Вы правильно указали свою активность в AndroidManifest.xml?Результат трассировки стека, когда вы закроете силу, пожалуйста.

1 голос
/ 17 января 2012

Вы также можете использовать атрибут android: onClick, который вы установили в своем xml-макете для соответствующих кнопок.Это полностью исключает необходимость использования переключателя.

android:onClick="onClickYourFirstButton"

В вашем классе деятельности добавьте метод onClick

public void onClickYouFirstButton(View v) {

http://developer.android.com/reference/android/view/View.html#attr_android%3aonClick

1 голос
/ 17 января 2012

Для нескольких кнопок я лично предпочитаю метод оператора switch, аналогичный тому, что вы сделали. Сначала включите OnClickListner в свою деятельность, затем включите переключатель.

    public class MainActivity extends Activity implements OnClickListener {...

затем внутри действия:

    public void onClick(View view) {
        Intent i;

        switch(view.getId()) {

        case R.id.buttonOneId:

            i = new Intent(getApplicationContext(), Activity1.class);
                    startActivity(i);   
            break;

        case R.id.buttonTwoId:

            i = new Intent(getApplicationContext(), Activity2.class);
                    startActivity(i);   
            break;
        }
    }

Чтобы эта функция работала с кнопками в упражнении, сделайте это для каждой кнопки:

 Button button = (Button) findViewById(R.id.buttonId);
   button.setOnClickListener(this);

В качестве альтернативы OnClickListner может быть встроен следующим образом:

   Button button = (Button) findViewById(R.id.buttonId);
   button.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
            Intent i = new Intent(getApplicationContext(), Activity.class);
            startActivity(i);
        }
    });

если используется метод in-line, повторите код для других кнопок.

0 голосов
/ 17 января 2012
Button myButton = (Button) findViewById(R.id.my_button);
myButton.setOnClickListener ( or something like that) 

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