我的应用程序在Windows顶部有操作栏。一些按钮在哪里。按钮计数,功能根据用户的活动而变化。
我想编写一个包含 addFirstButton , removeFirstButton 等方法的类。 所以其他课程我想这样做:
MyButtons myButtons = new MyButtons();
myButtons.addFirstButton();
所以一切都好,但如果我想这样做,如何创建一个监听器按钮?
通常我会这样做:
Button backButton = (Button) customNav.findViewById(R.id.back);
backButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(Action_Bar_TestingActivity.this, "BACK", Toast.LENGTH_SHORT).show();
}
});
但我希望这会在 MyButtons 类中,并且方法会以某种方式返回该操作的侦听器。
所有想法是否可能?
感谢。
答案 0 :(得分:1)
如果您正在编写操作栏,则可以在onOptionsItemSelected()
中处理其“按钮”。有关详细信息,请参阅此处:http://developer.android.com/guide/topics/ui/menus.html
如果您支持Android 1.6-2.x,则可以复制ActionBarCompat示例应用程序。它将使用一些与> = 3.x ActionBar相同的XML标志,但并非所有功能都被模拟。您也可以考虑使用Action Bar Sherlock。
如果您想设置并获取onClickListeners,则可以。没有什么说你必须在按钮内实例化点击监听器。但你必须做一些簿记。至少,在按钮数组之外实例化侦听器并将其传入。
以下是我制作独立点击监听器的方法:
Button.OnClickListener mTakePicOnClickListener =
new Button.OnClickListener() {
public void onClick(View v) {
dispatchTakePictureIntent(ACTION_TAKE_PHOTO_B);
}
};
这是我将它附加到按钮的地方(简单示例):
private void setBtnListener(
Button btn,
Button.OnClickListener onClickListener ) {
btn.setOnClickListener(onClickListener);
}
(如果你想看看这个功能的真实情况,它是Capturing Photos示例应用程序的一部分。)
但我认为您可以看到如何在MyButtons
内部使用此功能。
答案 1 :(得分:0)
或难以编码:
final Button backButton = null;
final LinearLayout navBar = (LinearLayout) customNav.findViewById(R.id.root);
Button addButton = (Button) customNav.findViewById(R.id.add_button);
addButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
if (backButton == null)
{
backButton = new Button(this);
backButton.setText("Back");
backButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
Toast.makeText(Action_Bar_TestingActivity.this, "BACK", Toast.LENGTH_SHORT).show();
}
});
navBar.addView(backButton);
addButton.setText("Remove Back button");
}
{
navBar.removeView(backButton);
backButton = null;
addButton.setText("Add Back button");
}
}
});