Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建按钮并将其分离_Java_Android - Fatal编程技术网

Java 创建按钮并将其分离

Java 创建按钮并将其分离,java,android,Java,Android,我的应用程序在windows上有操作栏。按钮在哪里。按钮计数,功能根据用户的活动而变化 我想用方法addFirstButton,removeFirstButton编写一个类。 因此,我想在其他课程中这样做: MyButtons myButtons = new MyButtons(); myButtons.addFirstButton(); 所以一切都很好,但是如果我想这样做,如何创建一个侦听器按钮呢 通常我会这样做: Button backButton = (Button) c

我的应用程序在windows上有操作栏。按钮在哪里。按钮计数,功能根据用户的活动而变化

我想用方法addFirstButtonremoveFirstButton编写一个类。 因此,我想在其他课程中这样做:

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类中,并且方法会以某种方式将侦听器返回到该操作

如果可能的话,有什么想法吗


谢谢。

如果您正在编程一个操作栏,那么您可以在
onOptionsItemSelected()
中处理它的“按钮”。有关更多信息,请参见此处:

如果您支持Android 1.6-2.x,您可以复制ActionBarCompat示例应用程序。它将使用一些与>=3.x ActionBar相同的XML标志,但并非所有功能都是仿真的。你也可以考虑使用Bar Sherlock。< /P> 如果您想设置并获取onClickListeners,您可以。没有任何说明您必须在按钮内实例化click侦听器。但是你得做一些簿记。至少,在按钮数组外部实例化侦听器并将其传入

下面是我如何创建独立的单击侦听器:

    Button.OnClickListener mTakePicOnClickListener = 
    new Button.OnClickListener() {
    public void onClick(View v) {
        dispatchTakePictureIntent(ACTION_TAKE_PHOTO_B);
    }
};
下面是我将其附加到按钮的位置(一个简单的示例):

(如果您想查看此函数的真实外观,它是示例应用程序的一部分。)


但我认为您可以看到如何在
MyButtons
内部使用此函数,或者如何以艰难的方式编码:

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

我使用ActionBarSherlock并创建了自己的布局
    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");
            }
        }
    });