Java 如何编辑/删除以编程方式创建的其他方法中的对象

Java 如何编辑/删除以编程方式创建的其他方法中的对象,java,android,Java,Android,我有一种方法,可以创建垂直布局,每个布局有3个按钮,水平对齐,onClick一次创建一个,每次单击最多5个布局。如何使用已创建的按钮删除这些布局 public void addTroop(Editable name){ LinearLayout mainPage = (LinearLayout) findViewById(R.id.manageTroopsMain); if (count <= 5) { //CREATE NEW LINEAR LAYO

我有一种方法,可以创建垂直布局,每个布局有3个按钮,水平对齐,onClick一次创建一个,每次单击最多5个布局。如何使用已创建的按钮删除这些布局

 public void addTroop(Editable name){

    LinearLayout mainPage = (LinearLayout) findViewById(R.id.manageTroopsMain);

    if (count <= 5)
    {
    //CREATE NEW LINEAR LAYOUT
    LinearLayout addTroopLayout = new LinearLayout(this);   

    //CREATE LAYOUT PARAMS FOR LAYOUT
    LinearLayout.LayoutParams newLayout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    newLayout.bottomMargin = 10;

    //STYLE NEW LINEAR LAYOUT
    addTroopLayout.setTag("addTroopLayout" + count);
    addTroopLayout.setLayoutParams(newLayout);
    addTroopLayout.setOrientation(LinearLayout.HORIZONTAL);     

    //CREATE NEW BUTTONS
    Button newTroop = new Button(this);
    Button remove = new Button(this);
    Button change = new Button(this);

    //CREATE LAYOUT PARAMS FOR BUTTONS
    LinearLayout.LayoutParams newTroopParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 20f);
    LinearLayout.LayoutParams rmvBtnParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, .5f);
    LinearLayout.LayoutParams chngNameParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, .5f);


    //STYLE NEW BUTTONS
    newTroop.setText(name);
    newTroop.setGravity(Gravity.LEFT|Gravity.CENTER_VERTICAL);
    newTroop.setLayoutParams(newTroopParam);
    remove.setTag("rmvBtn" + count);
    remove.setText("-");
    remove.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
    remove.setLayoutParams(rmvBtnParam);
    change.setText("...");
    change.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
    change.setLayoutParams(chngNameParam);

    //ADD VIEWS TO NEW LAYOUT
    addTroopLayout.addView(newTroop);
    addTroopLayout.addView(remove);
    addTroopLayout.addView(change);

    //ADD NEW LAYOUT TO mainPage LAYOUT
    mainPage.addView(addTroopLayout);

    //Increment Counter
    count++;
    }
}
我对移除按钮做了同样的操作

remove.setTag("rmvBtn" + count);
那么现在我如何访问/编辑/删除这些?我能做点什么吗

    Button rmvBtn1 = (Button) findViewByTag(R.id.rmvBtn1);

    rmvBtn1.setOnClickListener(new view.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //REMOVE CREATED LAYOUT
            //DECREMENT ALL LAYOUT TAGS BY 1 IF NOT LAST LAYOUT
            //DECREMENT count VAR BY ONE
            //ERASE ALL VARIABLES ASSOCIATED WITH THIS VIEW
        }
    });
这段代码显然给了我一些错误,我确信这很简单。谢谢

////////////////////编辑/////////////////////

对不起,如果我不清楚我想要什么。因此,我使用if语句创建/设置了一个按钮的样式,该语句是从使用onClick的方法调用的:

Button newTroop = new Button(this);
remove.setTag("rmvBtn" + count);
计数从1开始,并在按下按钮时递增。现在,我想为该按钮查找dviewbytag,以便将其与以下内容一起使用:在此处输入代码

Button rmvBtn1 = (Button) findViewByTag(rmvBtn1);

rmvBtn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//REMOVE CREATED LAYOUT
//DECREMENT ALL LAYOUT TAGS BY 1 IF NOT LAST LAYOUT
//DECREMENT count VAR BY ONE
//ERASE ALL VARIABLES ASSOCIATED WITH THIS VIEW
}
});
那么具体来说,如何使用用if语句创建的按钮呢?我还需要用什么来定义它

Button rmvBtn1 = (Button) findViewByTag(rmvBtn1);

或者有其他方法可以这样做吗?

在“删除”按钮中保留视图,并保留视图的父视图int-view标记

addTroopLayout.setTag(mainPage);
remove.setTag(addTroopLayout);
然后像这样使用它

rmvBtn1.setOnClickListener(new view.OnClickListener() {

        @Override
        public void onClick(View v) {
            View willRemove = (View)v.getTag();
            LinearLayout mainPage = (LinearLayout)willRemove.getTag();
            mainPage.removeView(willRemove);
        }
    });

这段代码显然给了我一些错误
除非你显示出你得到的错误,否则它并不明显;-)
rmvBtn1.setOnClickListener(new view.OnClickListener() {

        @Override
        public void onClick(View v) {
            View willRemove = (View)v.getTag();
            LinearLayout mainPage = (LinearLayout)willRemove.getTag();
            mainPage.removeView(willRemove);
        }
    });