Как отправить событие клика в Android - PullRequest
2 голосов
/ 25 июля 2011

У меня есть пользовательская панель навигации, которая содержит кнопку, я бы отправил событие click, чтобы действие, содержащее мою панель навигации , могло отвечать на нажатие

    public class BarrePersonnalisee extends LinearLayout implements OnClickListener {
        Context mycontext;
        View convertview;
        ImageButton searchadresse;

        public BarrePersonnalisee(Context context, AttributeSet attrs) {
            super(context, attrs);
            mycontext=context;
            convertview=LayoutInflater.from(mycontext).inflate(R.layout.barre, this);
            searchadresse=(ImageButton)convertview.findViewById(R.id.searchadresse);
            searchadresse.setOnClickListener(this);
        }

        public void onClick(View arg0) {
            switch (arg0.getId()) {
            case R.id.searchadresse:
                //I want to dispatch this event
                    break;
                   }
            }
    ....
    }

public class TaxiMapActivity extends MapActivity{

    BarrePersonnalisee barre;

    ...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        barre=(BarrePersonnalisee)this.findViewById(R.id.barre1);
        //task to do here


}

Может кто-нибудь помочь?

Ответы [ 4 ]

3 голосов
/ 18 апреля 2012

Я считаю, что вы ищете button.performClick()

, и если вам не нужен звук щелчка, вы можете сделать:

button.setSoundEffectsEnabled(false)
0 голосов
/ 24 сентября 2016

Вы можете использовать EventBus здесь: http://greenrobot.org/eventbus/

  1. Загрузить EventBus

    зависимости { compile fileTree (dir: 'libs', include: ['* .jar']) testCompile 'junit: junit: 4.12' скомпилировать 'com.android.support:appcompat-v7:24.1.1' скомпилируйте 'com.android.support:support-v4:24.1.1' скомпилируйте 'org.greenrobot: eventbus: 3.0.0' }

  2. Создать новый тип события Class. Давайте назовем это BarrePersonnaliseeEvent.

открытый класс BarrePersonnaliseeEvent {

private boolean _touchDown;
public BarrePersonnaliseeEvent(boolean touchDown) {
    _touchDown = touchDown;
}

public boolean isTouchDown(){
    return _touchDown;
} }
  1. Теперь передайте событие в EventBus

открытый класс BarrePersonnalisee расширяет LinearLayout, реализует OnClickListener { Контекст mycontext; Просмотр convertview; ImageButton searchadresse;

    public BarrePersonnalisee(Context context, AttributeSet attrs) {
        super(context, attrs);
        mycontext=context;
        convertview=LayoutInflater.from(mycontext).inflate(R.layout.barre, this);
        searchadresse=(ImageButton)convertview.findViewById(R.id.searchadresse);
        searchadresse.setOnClickListener(this);
    }

    public void onClick(View arg0) {
        switch (arg0.getId()) {
        case R.id.searchadresse:
            //I want to dispatch this event
                EventBus.getDefault().post(new BarrePersonnaliseeEvent(true));
                break;
               }
        }
....
}
  1. Обновить активность, чтобы начать получать события:

открытый класс TaxiMapActivity расширяет MapActivity {

BarrePersonnalisee barre;

...
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    barre=(BarrePersonnalisee)this.findViewById(R.id.barre1);

}

@ Subscribe (threadMode = ThreadMode.MAIN) public void onBarrePersonnaliseeEvent (событие BarrePersonnaliseeEvent) { Toast. }

}

  1. Обязательно зарегистрируйте и отмените регистрацию для EventBus в своей деятельности

    @ Override public void onStart (Контекстный контекст) { super.onStart (контекст); . EventBus.getDefault () регистр (это); }

    @ Override public void onStop () { super.onStop (); . EventBus.getDefault () разрегистрировать (это); }

0 голосов
/ 25 июля 2011

Предполагая, что вам нужно прикрепить событие click к кнопке на панели навигации, вы можете использовать метод setOnClickListener() и реализовать метод onClick(), например:

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            //define what you want to do here
            Toast.makeText(getApplicationContext(), "Works", Toast.LENGTH_SHORT).show();
        }
    });

, когда вы нажмете кнопку, появится тост с надписью «Работает».

0 голосов
/ 25 июля 2011

Используйте этот код

            Button b=new Button(this);
            b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //what you want to do
            }
        })
...