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

时间:2013-12-02 23:47:42

标签: android eclipse button onclick android-widget

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

我在java方面的经验很少,每当我遇到困难时都会转向Google,但我找不到任何可以帮助我解决困境的事情。 这是我的activity_main.xml文件:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        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_width="150dp"
            android:layout_height="wrap_content"
            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:

2 个答案:

答案 0 :(得分:1)

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

 <Button
   android:id="@+id/button2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   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);

    }
});

答案 1 :(得分:0)

要添加新的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

如果您需要不确定数量的Button,具体取决于点击Button的次数,那么您可能希望使用此项。如果您有一些可以添加的ButtonVisibility,那么更改 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addYearButton = (Button) findViewById(R.id.add); } 就可以了。

修改

Button

这是您应该初始化第一个onCreate()并在Button addYearButton;之前使用Button进行声明的地方。此外,您需要activity_main.xml id add {{1}} {/ 1}}。