如何从用户定义的变量设置动态创建的CheckBox的文本

时间:2013-06-02 18:50:31

标签: android variables checkbox dynamically-generated

我有这段代码:

package com.app.BoomBase;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;

public class CheckList extends Activity{
ImageButton bAddBoom, bAddTools, bAddCloth, bRemoveBoom, bRemoveTools, bRemoveCloth;



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.check_list);
    final LinearLayout llBooms = (LinearLayout) findViewById(R.id.llBooms);
    ImageButton bAddBoom = (ImageButton) findViewById(R.id.bAddBoom);


    bAddBoom.setOnClickListener(new View.OnClickListener() {

        @SuppressWarnings("deprecation")
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            AlertDialog alert = new AlertDialog.Builder(CheckList.this).create();
            final EditText input = new EditText(CheckList.this); 
            alert.setTitle("Name of category?");
            alert.setView(input);
            alert.setButton("OK", new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int which) {
                     String userin = input.getText().toString();
                     if(userin != null){
                        return; 
                        }
                        else{   
                        for(int i = 0; i < 1; i++) {
                            CheckBox cb1 = new CheckBox(getBaseContext());
                            cb1.setText(userin+i);
                            cb1.setId(i+1);
                            llBooms.addView(cb1);
                        }
                        }

                    }
                });
                alert.show(); 
            alert.setButton("Cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                }

                });

        }
    });
}

}

我无法弄清楚如何使复选框具有变量“userin”的名称..任何人都可以帮助我吗? 另一个问题:我如何处理代码中新创建的复选框,以便我可以检查内容是否被选中?

谢谢!

1 个答案:

答案 0 :(得分:1)

@Lasse,

在您对Android编程的理解中存在一些“差距”,您必须在继续之前填写。即使有人真的会回答你的问题,但如果在你的应用程序中添加更多代码,就像你添加更多代码一样,几分钟之后会再次出现同样的问题,这肯定会有所帮助。

我不想冒犯这个答案,但你的问题基本上是:如何在Android上调试任何东西?您的问题是知道是否,以及为什么某些代码被执行,您必须了解如何在编程时始终检查

所以你应该/可以:

  • 了解如何使用调试器。在android中,你可以通过逐行运行,访问变量值,表达式等来调试程序并查看代码的执行方式。
  • 学习如何跟踪程序,基本上就像使用Log.x()一样,还要打印变量值,检查条件代码的分支等。
  • 学习阅读文档。您实际上正在使用SDK 3中已弃用的方法setButton(...)(实际版本为17 ...)。学习如何阅读本文。
  • 按照IDE中的警告操作,尝试将其全部删除,以提高应用质量。
  • 使用Lint,它会更多地告知您应用中的潜在问题。同样,确保在编程时没有Lint警告,在发布时更多。

这是一个比给你答案更好的建议。

然而,根据我的说法,问题可能有两个原因:

  • 在程序中使用setButton两次,这将覆盖您的第一个侦听器。
  • 使用未维护的已弃用API。尝试使用替换它的新方法,事情应该更好。