2

ボタンを含むカスタム ナビゲーション バーがあります。クリック イベントをディスパッチして、ナビゲーションバーを含むアクティビティがクリックに応答できるようにします。

    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

4 に答える 4

3

あなたが探しているのはbutton.performClick()

クリック音がしたくない場合は、次のようにします。

button.setSoundEffectsEnabled(false)
于 2012-04-18T18:07:30.973 に答える
0

ここで実際に EventBus を使用できます: http://greenrobot.org/eventbus/

  1. EventBus をロードする

    依存関係 { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.1.1' compile 'com.android .support:support-v4:24.1.1' compile 'org.greenrobot:eventbus:3.0.0' }

  2. 新しいイベント タイプ クラスを作成します。これを BarrePersonnaliseeEvent と呼びましょう。

public class BarrePersonnaliseeEvent {

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

public boolean isTouchDown(){
    return _touchDown;
} }
  1. イベントを EventBus に渡す

public class BarrePersonnalisee extends LinearLayout implements OnClickListener { コンテキスト mycontext; 変換ビューを表示します。ImageButton searchaddresse;

    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. アクティビティを更新して、イベントの受信を開始します。

public class 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 event) { Toast.makeText(getActivity(), "ボタンに触れた: " + event.isTouchDown(), Toast.LENGTH_SHORT).show(); }

}

  1. アクティビティで EventBus の登録と登録解除を行ってください。

    @Override public void onStart(Context context) { super.onStart(context); EventBus.getDefault().register(これ); }

    @Override public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); }

于 2016-09-24T19:59:16.443 に答える
-1

このコードを使用

            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
            }
        })
于 2011-07-25T10:30:26.407 に答える
-1

ナビゲーション バー内のボタンにクリック イベントをアタッチする必要があると仮定すると、メソッドを使用し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();
        }
    });

ボタンをクリックすると、「Works」というトーストが表示されます。

于 2011-07-25T10:32:47.950 に答える