【问题标题】:Android App. Create checkbox from a text field安卓应用。从文本字段创建复选框
【发布时间】:2015-11-21 23:52:33
【问题描述】:

我是 java 和 android 编程的新手。我想要做的是创建一个应用程序,在 EditText 字段中引入名称后创建一个复选框。就像创建待办事项清单或购物清单一样。

public class MainActivity extends AppCompatActivity {

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

public void storeProduct(View view) {
    //Input name
    EditText productField = (EditText) findViewById(R.id.product_field);
    String product = productField.getText().toString();
}

public void createCheckBox(String product){
    //Create Checkbox
    CheckBox savedPRoduct = new CheckBox(getApplicationContext());
    savedProduct.setText(producto);
}

这是我到目前为止所得到的。而且我不确定它是否正确。我一直在寻找文档和一些论坛,包括这个,我设法创建了方法 storeProduct 来保存来自 EditText 视图的字符串。然后我创建方法 createCheckbox,该方法使用 EditText 视图中的字符串生成复选框。我不确定是否可以创建显示已创建复选框的方法。

非常感谢您与我分享的任何线索和信息。

非常感谢。

【问题讨论】:

    标签: java android checkbox methods


    【解决方案1】:

    您通常需要在 res/layout/R.layout.activity_main.xml 下的文件中添加视图内容

    从那里您可以在布局中添加您需要的所有视图。这是来自 android 文档的示例布局。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="@string/send" />
    </LinearLayout>
    

    您也可以通过编程方式执行此操作,但我不建议您这样做,因为这违反了 android 的良好做法。

    【讨论】:

    • 好吧,应用程序应该仅在按下 storeProduct 按钮时创建复选框。我在 XML 文件中拥有的只是 EditText 视图和 Button 视图。你能告诉我为什么它违反了 android 的良好做法吗?
    • 如果 99% 的时间都不需要,您将以更复杂的代码结束 ip。关于您的问题,您可以在按下按钮之前设置复选框的属性 android:visibility="gone" 。您可以将视图的可见性设置为可见。
    • 太好了,我可以创建一个复选框。现在我会研究一下,想出一个循环,每次按下按钮时都会创建不同的复选框:)
    • 我很好奇为什么每次有人按下按钮时你都想创建一个不同的复选框?如果我回答了您的问题,我很高兴能提供帮助,请将此标记为已回答:)
    • 嗯,该应用程序应该用作购物清单。您可以通过 EditText 字段介绍您需要的任何产品。然后,创建列表后,您可以检查您放入购物车的所有物品。
    【解决方案2】:

    所以,在 KevDev 的帮助下,我设法想出了这个 xml 代码:

    <LinearLayout 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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
    
    <EditText
        android:id="@+id/product_field"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textCapSentences"
        android:hint="Product"/>
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="storeProduct"
        android:text="Guardar"/>
    
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="product"
        android:id="@+id/productCheckBox"
        android:visibility="gone"/>
    </LinearLayout>
    

    还有这个java代码:

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void storeProduct(View view) {
            //Input name
            EditText productField = (EditText) findViewById(R.id.product_field);
            String product = productField.getText().toString();
    
            CheckBox savedProduct = (CheckBox) findViewById(R.id.productCheckBox);
            savedProduct.setText(product);
            savedProduct.setVisibility(View.VISIBLE);
        }
    
    
    }
    

    它只显示一次复选框,但我正在制作一个循环来放置一系列复选框。我也在查看 recyclerview 文档以在此代码中介绍它。

    【讨论】:

      猜你喜欢
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2015-02-18
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多