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