【问题标题】:Creating texts and buttons with listeners successively?连续创建带有听众的文本和按钮?
【发布时间】:2011-11-15 18:05:43
【问题描述】:

我将尝试解释我的问题。如您所见,下面的代码尝试在数组从另一个类获取时添加一些文本视图和按钮。

public class Breakfast extends Activity {

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Bundle extras = getIntent().getExtras();

        ScrollView sv = new ScrollView(this);
        LinearLayout ll = new LinearLayout(this);
        sv.addView(ll);
        if (extras != null) {

             String food[]=extras.getStringArray("food");       
             String foodCateg[]=extras.getStringArray("foodCateg");

             int K=0;

             for (int i = 0; i < food.length/3; i++) {
                 TextView foodDay = new TextView(this);
                 foodDay.setText("Day "+ (i+1));    
                 ll.addView(foodDay);

                 for (int j=K;j<K+3;j++){
                     Button contfood= new Button(this);
                     contfood.setText(food[j]);
                     ll.addView(contfood);
                 }
                 K=K+3;         
             }
             this.setContentView(sv);
         }
    }

我的问题是我怎么知道在屏幕上点击了哪些按钮?因为在点击其中一个的情况下(获取之前写过的文本),我会做一些事情或其他事情。


ahhhhhhhhhhhhhhhhh 是的,我知道如何进行 ListActivity。但首先我认为是手工操作,因为我不认为如何简化这一点......

感谢您尝试使用列表视图和方法 OnListItemClick 构建所有内容的答案,但我认为这不是解决方案。

我之所以这么说是因为例如当我插入这一天时(我没有听到所有的代码......)但我做了 .setgravity .setSize .setbackgroundResource 等。那天的食物我使用了不同的.setgravity 和更多参数。所以我认为使用 listview 一切都会有相同的规格......这就是我不喜欢的。

所以...要知道屏幕上按下了什么按钮?

【问题讨论】:

  • 你说吧。一个问题。请单独询问并接受充分的答案。
  • 我不认为这是一个新问题,首先我说这可能是一个新问题,但后来我最终得出结论,我的问题与第一篇文章相同。但我会编辑...

标签: android button listener


【解决方案1】:

您可以使用 contfood.setId(i) 并从那里开始工作。

但是你正在做的事情看起来你真的想创建一个ListActivity 并使用它是OnItemClickListener

【讨论】:

  • 我正要发布这个!遵循这个建议!使用 ListView,不要尝试手动操作。否则它会在以后回来咬你。
  • +1,ListView / ListActivity 一开始可能会有点复杂,但是一旦你掌握了它,它就会比手工做起来容易得多,而且是“好习惯”
  • soooo 我认为我的问题的最佳答案是在 for 中实现 contfood.setid(i)。但是,我怎样才能调用被点击的按钮呢?
  • 虽然我仍然建议使用ListActivity,但您可以在OnClickListeneronClick 方法中获取视图ID。
  • 我为我创建的每个按钮添加了 id。但是现在我如何在我编写的代码中使用 onclicklistener 来引用这个按钮呢?对不起……
【解决方案2】:

您应该为每个“contfood”按钮添加一个 ID。然后当您单击按钮时,检索 id 以执行您想要的操作。

另一种方法是创建按钮并附加方法public void onClick(View view):

for (int j=K;j<K+3;j++){
                 Button contfood= new Button(this);
                 contfood.setText(food[j]);
                 ll.addView(contfood);

                public void onClick(View view) {
                    Intent myIntent = new Intent(view.getContext(), xxx.class);
                    startActivityForResult(myIntent, 0);
          }
}

并在方法中添加参数。

【讨论】:

  • 对不起,但这不起作用,因为 onClick 必须放在 oncreate 方法之外。我认为最好的答案是为我构建的每个按钮实现一个 id(我已经这样做了),当我不得不说出这些按钮的按下方式时,我的问题就来了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多