Java 动态添加唯一按钮

Java 动态添加唯一按钮,java,android,xml,android-layout,Java,Android,Xml,Android Layout,这就是我现在拥有的: 单击“添加类”时,我希望在“添加类”按钮的正上方显示另一个按钮。单击此新创建的按钮时,将切换到显示该类所有作业的活动(新建按钮)。我想我有办法做到这一点,但只是以最基本的形式 我想有三件事我不确定: 1) 如何通过java在xml文件中的特定位置添加按钮 2) 如何添加具有唯一标识符的按钮 3) 如何单击新创建的按钮,以便打开一个仅显示该按钮分配的新活动 以下是我的xml布局当前的外观: <?xml version="1.0" encoding="utf-8"?&g

这就是我现在拥有的:

单击“添加类”时,我希望在“添加类”按钮的正上方显示另一个按钮。单击此新创建的按钮时,将切换到显示该类所有作业的活动(新建按钮)。我想我有办法做到这一点,但只是以最基本的形式

我想有三件事我不确定:

1) 如何通过java在xml文件中的特定位置添加按钮

2) 如何添加具有唯一标识符的按钮

3) 如何单击新创建的按钮,以便打开一个仅显示该按钮分配的新活动

以下是我的xml布局当前的外观:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#7BEDFC" >

<ScrollView
     android:layout_width="fill_parent"
     android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/mLlayoutBottomButtons"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="10dp" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:text="Classes"
            android:textStyle="bold"
            android:textAppearance="?android:attr/textAppearanceLarge" />
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="@drawable/roundedcorners"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="10dp"
            android:textStyle="bold"
            android:drawableRight="@drawable/rightarrow"
            android:gravity="left|center_vertical"
            android:text=" Math" />
        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@drawable/roundedcorners"
            android:textStyle="bold"
            android:padding="10dp"
            android:text="Add a Class" />                               
    </LinearLayout>

 </ScrollView>

</RelativeLayout>

您想在我猜的线性布局中添加按钮(id mLlayoutBottomButtons)。在您的活动中,您可以这样做:

LinearLayout buttonsLayout = (LinearLayout) findViewById(R.id.mLlayoutBottomButtons);
您将动态创建按钮,可以给它一个id(button.setId(intid)),但这不是必需的。只需像这样创建和添加它

Button newButton = new Button(this);
newButton.setText("New button");
buttonsLayout.addView(newButton, parentView.getChildCount() - 2); //see Edit at end of post
现在我们创建了按钮并将其添加到布局中。作为最后一步,您只需将OnClickListener设置为此按钮。在onClick方法中,您可以带着意图启动活动并添加额外内容,以确定下一个活动中应该显示哪个分配

Intent intent = new Intent(CurrentActivity.this, TargetActivity.class);
intent.putExtra("assignmentType", "theNewButtonsAssignments");
startActivity(intent);
在新的活动中,调用getIntent().getStringExtra(“assignmentType”)检索应显示的分配

编辑:
您可以使用addView(View child,int index)将其插入linearLayout中的某个位置

谢谢,这真的很有帮助!但有一件事我不确定,那就是额外的费用。假设我在活动A中有buttonA,在活动B中有buttonB。因此,当我单击buttonA将我带到ActivityB时,当我单击buttonB将在当前活动(ActivityB)上添加buttonC时。因此,在任何时候,当我返回ActivityA时,单击buttonA将返回ActivityB时,它将显示buttonC,buttonB和我单击buttonB时创建的任何其他按钮。但是,如果我使用ActivityA中的另一个按钮导航到ActivityB,它将有一组全新的按钮。buttonB可能相同,但其他按钮不同。您应该查看Activity的用途。“活动”没有可更改的状态,因此无法保存以备下次使用。当您导航回ActivityA时,活动B可能会在再次出现时被完全销毁并重新创建。如果你需要保存一个状态,我建议在一个独立的类中这样做。如果您想永久保存它,可以使用SharedReference或文件系统/数据库。我读了一些关于使ActivityB的视图由数据模型支持的内容,您可以详细介绍一下这种方法吗?这是关于应用程序的总体架构。您可以浏览一些关于多层体系结构和模型-视图-控制器的维基百科文章。您不必尝试应用它们并深入理解它们,但您将理解“数据模型”的含义。这对您来说意味着:将分配对象与活动分开,并将其状态(如isActivated)与活动分开存储。然后活动只读取状态(actived=按钮在那里)并在UI中显示。