【问题标题】:swithcing to next textview切换到下一个文本视图
【发布时间】:2014-03-28 20:12:44
【问题描述】:

好的,我正在制作应用程序,它有 15 个按钮和 6 个文本视图。我希望​​当我按下第一个按钮时将第一个文本视图的值(值为“”)更改为某个值(例如,第一个)。但问题是当我按下如果第一个 textview 已设置为某个值,则第二个按钮将第二个 textview 设置为第二个值。

如果您需要其他内容,请在 cmets 中询问(抱歉英语不好)

当我按下第二个按钮时,这就是我正在做的事情(这是在 onclick 下)

if(textview1.equals("1")){
            textview2.setText("2");}
            else if (textview1.equals("")){
            textview1.setText("2");
            }

【问题讨论】:

  • textview1.equals("1") textView1 显然不是字符串。可能是 TextView。
  • 将 textview1.equals("1") 更改为 textview1.getText().toString().equalsIgnoreCase("1")

标签: android eclipse button textview


【解决方案1】:

听起来您希望显示最后按下的 6 个按钮。 将所有按下的按钮存储在大小为 6 的List(即LinkedList)中。最初,它将为空。

然后,每当按下任何按钮时,都会做两件事:
1) 将其添加到List 并在大小超过六个时删除旧元素。
2) 从List 设置按钮值。

第二步可以这样实现:

// all TextViews should be in a list
private List<TextView> textViews;

// declare as field
private List<String> memoryQueue = new ArrayList<String>();

public void update() {
    //set fields for the pressed buttons
    for (int i=0; i<6 && i<memoryQueue.size(); i++) {
        String text = memoryQueue.get(i);
        textViews.get(i).setText(text);
    }

    // set empty fields
    for (int i = memoryQueue.size(); i<6; i++) {
        textViews.get(i).setText("");
    }
}

此代码 sn-p 假定您将 TextViews 存储在 List 中。

跟踪最后六个按钮的最简单方法:

public void buttonPressed(Button button) {
    //get text based on your button
    String text = button.getText();

    if (memoryQueue.contains(text)) {
         return;
    }

    memoryQueue.add(text);
    if (memoryQueue.size() > 6) {
        memoryQueue.remove(0);
    }
}

【讨论】:

  • 不能很好地理解这一点,但也许它会有所帮助
  • 这是一个列表,您可以在其中存储最后按下的六个按钮(使用步骤 1 更新)。
  • 仍然无法正常工作(未将内存队列显示为命令)
  • 对不起,memoryQueue 是一个变量。在您的 constuctir 或 onCreate 方法中放置 List memoryQueue = new ArrayList();
  • 更新了代码以覆盖 memoryQueue 小于 6 个元素时的极端情况。
【解决方案2】:

由于您关心文本视图中的文本,您应该使用对象的 getText 方法:

if( textview1.getText().equals("1") ){ // Edited
    textview2.setText("2");
} else if (textview1.getText().equals("")){ //Edited
    textview1.setText("2");
}

【讨论】:

  • 您不能将两个String== 运算符进行比较。
  • 好收获。我可以收回我的观点吗?我在正确的轨道上.. 我刚刚编辑
【解决方案3】:

首先,您必须使用getText() 方法从TextView 获取String 文本,然后您可以将String 与另一个String 进行比较。现在,改变你的条件如下......

if(textview1.getText().toString().equals("1")){
    textview2.setText("2");}
else if (textview1.getText().toString().equals("")){
    textview1.setText("2");
}

【讨论】:

  • 但这只是当我使用两个按钮时
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多