gpt4 book ai didi

java - 如何在 Android 中注册多个监听器?

转载 作者:行者123 更新时间:2023-11-29 03:01:28 24 4
gpt4 key购买 nike

在 iOS 中,我可以注册多个 target+action 事件处理程序,例如像这样的按钮:

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 40, 300, 40)];
[button setBackgroundColor:[UIColor blueColor]];
[button setTitle:@"Click Me!" forState:UIControlStateNormal];
[button addTarget:self action:@selector(handler1) forControlEvents:UIControlEventTouchUpInside];
[button addTarget:self action:@selector(handler2) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}

- (void)handler1 {
NSLog(@"Click handler 1"); // FIRES!
}

- (void)handler2 {
NSLog(@"Click handler 2"); // FIRES!
}

@end

我想在 Java/Android 中实现类似的东西,不幸的是,只要第一个监听器被第二个监听器取代,这就行不通了:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button button = (Button) findViewById(R.id.button);
button.setText("Click Me!");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Test", "Click handler 1"); // DOES NOT FIRE!
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Test", "Click handler 2"); // FIRES!
}
});

}
}

对于在 Java/Android 中实现相同目标的任何帮助和建议,我表示感谢!

最佳答案

阅读有关 RxJava 的文章它是 future :) http://reactivex.io/

ViewObservable.clicks((Button) getActivity().findViewById(R.id.comment_btn))
.compose(lifecycleMainObservable().<OnClickEvent>bindLifecycle())
.subscribe(new Action1<OnClickEvent>() {
@Override
public void call(OnClickEvent onClickEvent) {
Log.d("Button click", "Button 1 click");
}
});

ViewObservable.clicks((Button) getActivity().findViewById(R.id.comment_btn))
.compose(lifecycleMainObservable().<OnClickEvent>bindLifecycle())
.subscribe(new Action1<OnClickEvent>() {
@Override
public void call(OnClickEvent onClickEvent) {
Log.d("Button click", "Button 2 click");
}
});

关于java - 如何在 Android 中注册多个监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34609576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com