Android Eclipse - 单击时创建另一个按钮的按钮

Posted

技术标签:

【中文标题】Android Eclipse - 单击时创建另一个按钮的按钮【英文标题】:Android Eclipse - Button that creates another button on click 【发布时间】:2013-12-18 20:41:10 【问题描述】:

我正在尝试创建一个 android 应用,用户可以在其中划分他们在大学每一年学习的课程。这个想法是有一个带有“添加年份”按钮的打开屏幕,当它被点击时,它会在它的上方或下方创建一个按钮(并不重要),他们可以为其创建自定义名称。 “添加年份”按钮必须保留,以便他们可以根据需要添加尽可能多的年份/学期/w/e。 我一直在关注本教程:http://developer.android.com/training/basics/firstapp/starting-activity.html 忽略有关添加文本字段的部分。当它得到关于让你的按钮做某事的部分时,本教程将获取用户输入的文本并将其显示在一个新的 xml 中。

我在 java 方面的经验很少,每当遇到困难时都会求助于谷歌,但我没有找到任何可以帮助我解决困境的东西。 这是我的 activity_main.xml 文件:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_
        android:layout_
        android:background="@drawable/main_background"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >

        <Button
            android:id="@+id/button_add_year"
            android:layout_
            android:layout_
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="39dp"
            android:text="@string/button_add_year"
            android:onClick="addYear" />

    </RelativeLayout>

还有我的 .java

            package com.bkarpinski.macgpatrack;

    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.*;

    public class MainActivity extends Activity 

        @Override
        protected void onCreate(Bundle savedInstanceState) 
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        


        @Override
        public boolean onCreateOptionsMenu(Menu menu) 
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        

        /** Called when the user clicks the addYear button */
        public void addYear(View view) 
            Intent intent = new Intent(this, CreateNewYearButton.class);
        
    

请帮帮我!我必须在这个星期三展示,我被困住了!! D:

【问题讨论】:

到底是什么问题?什么是/不工作? 它现在可以工作,但我不知道如何让按钮在同一屏幕上创建另一个按钮。它调用 CreateNewYear.class,但该类是空的,因为我不知道从那里开始 【参考方案1】:

最简单的方法是隐藏第二个按钮,然后单击第一个按钮使第二个按钮可见首先使第二个按钮不可见

 <Button
   android:id="@+id/button2"
   android:layout_
   android:layout_
   android:layout_alignParentLeft="true"
   android:layout_centerVertical="true"
   android:text="2ndButton"
   android:visibility="invisible" />

然后使用 OnClickListener 方法与此

addYearButton = (Button) findViewById(R.id.add);
2ndButton = (Button) findViewById(R.id.button2);

addYearButton.setOnClickListener(new OnClickListener() 
@Override
public void onClick(View v) 
         //when addYear is clicked show the new button
         2ndButton.setVisibility(View.VISIBLE);

    
);

【讨论】:

我可以使用 if 语句使其添加后续按钮吗?类似 if(2ndbutton.visibility == true) 3rdButton.setVisibility(view.VISIBLE); ?【参考方案2】:

要添加新的Button,您可以使用类似的方式以编程方式创建它

addYearButton = (Button) findViewById(R.id.add);

addYearButton.setOnClickListener(new OnClickListener() 
  @Override
  public void onClick(View v) 
  
      //when addYear is clicked show the new button
      Button b = new Button(v.getContext());  // create Button
      b.setText("Some text on Button");      //  Set the text of the Button
      // set params and add button to layout

    
);

第二个答案in this question 显示如何添加Button 并将params 添加到其中,例如heightwidth。另见the LayoutParam Docs。

如果您需要不确定数量的Buttons,具体取决于单击Button 的次数,那么您可能会想要使用它。如果您有几个可以添加的Buttons,那么更改Visibility 将起作用。

编辑

 @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        addYearButton = (Button) findViewById(R.id.add);  
    

你应该在这里初始化你的第一个Button,并在onCreate()之前用Button addYearButton;声明它。此外,您需要在activity_main.xml 中使用Buttonidadd

【讨论】:

这与 2 小时前给出的答案相同。 @user2511882 不,不是。我正在展示如何以编程方式(而不是通过 xml)添加 Button,这是一种完全不同的方法,而不是仅仅更改预构建的 Buttons 的 Visibility 我是把它放在我的java还是主xml中?因为当我把它放在 java 中时,它给了我一条错误消息,在第一个 addYearButton 下划线 此代码将在您的 Java 代码中,但您仍需要 xml 中的 add 按钮 R.id.add 给我带来了问题

以上是关于Android Eclipse - 单击时创建另一个按钮的按钮的主要内容,如果未能解决你的问题,请参考以下文章

未创建 Android listview 内容视图

Android SDK中的Eclipse Marketplace在哪里

在Eclipse上创建Android模拟器

eclipse中android悬停时按钮的Android颜色变化

如何为viewpager添加单击事件实现界面跳转

在 linux fedora 的 AVD 文件夹中创建 sdcard 失败?