创建按钮并分离功能android

时间:2012-03-30 08:46:58

标签: java android

我的应用程序在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 类中,并且方法会以某种方式返回该操作的侦听器。

所有想法是否可能?

感谢。

2 个答案:

答案 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");
            }
        }
    });