【问题标题】:for loop jumps to last number in java android developmentfor循环跳转到java android开发中的最后一个数字
【发布时间】:2016-06-21 05:32:43
【问题描述】:

您好,我正在制作一个 android 应用程序,我想向数据库中添加一些值,并且我想做 N 次,所以我使用了一个 for 循环,如下所示:

private void addCodeToDataBase() {

    for (int i = 1; i <= 100; i++) {
        //indexnumber is a TextView
        indexNumber.setText("Please enter the TAN code for Index number " + i);
        //tanCode is an EditText
        if (tanCode.getText().toString() != null) {
        //index here is just an int so i can use the i inside the onClick
            index = i;
         //add is a button
            add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String codeText = tanCode.getText().toString();
                    dbHandler.addcode(index, codeText);
                }
            });

        } else {
            Toast.makeText(addcode.this, "Please enter your code !!!", Toast.LENGTH_LONG).show();
        }
    }
}

但我在这里面临的是 for 循环在第一次运行时跳转到 100,我的意思是文本将显示:

请输入索引号 100 的 TAN 代码

它会跳过 99 个数字!!我将如何解决它?

【问题讨论】:

  • 发生这种情况是因为您已将 add.setOnClickListener 放入您的 for 循环中,并且当您点击添加按钮时,循环已经执行,从而生成了 i = 100 的值。
  • 不,这是不正确的...... for 循环运行良好......问题是您没有暂停每次迭代的执行,因此它一次完成所有执行......也就是说,for 循环的工作范围是从 1 到 100,但您只能看到第 100 个,因为 for 循环已在 100 处结束..
  • 关于如何修复它的任何想法? @拉尔

标签: java android database for-loop logic


【解决方案1】:

这是因为你的for循环执行的太快了,以至于你没有注意到文本的变化。首先i是0,然后变成1,然后文本将是“请输入索引号1的TAN代码“……

【讨论】:

  • 您对解决此问题有何建议?
  • 你想要什么,你想要索引增加只点击添加按钮?
  • 我想做的是在数据库的表中添加 100 个 TAN 代码,我希望用户在第一次运行应用程序时手动执行此操作。所以我正在考虑使用 for 循环选项,这样它就可以执行 100 次这个过程。
  • 你的意思是你要一个一个地添加这些,你应该添加 continue 你的循环只有 onClick 方法被调用,这意味着当用户添加代码时,然后下一步,否则索引不会改变.
【解决方案2】:

您的循环工作正常,但它在每次迭代中替换文本,这就是为什么您认为它在最后一个值上跳转的原因请使用断点并调试您将在每次迭代中看到每个值或使用您将看到每个值的日志价值

【讨论】:

  • 如果你想在前台显示每个,那么请使用数组或列表添加它们,然后在回收器视图或列表视图中显示
【解决方案3】:

如果没有看到indexNumbertanCodeindex,尤其是add 的声明,很难想象您的代码会做什么。因此,例如,我们不知道您的 if 条件多久产生一次。

但是,最有可能的是,问题在于您的分配 add.setOnClickListener(...) 只是在没有用户交互的情况下进行了迭代。现在,如果您反复为您的add 分配一些东西(无论是什么),最后一个分配将获胜。

如果您想要 100 个按钮,则需要一个按钮数组或按钮列表来按下,其中每个按钮都有不同的 tan 代码。如果您想要一个按钮反复询问不同的棕褐色,那么您必须仅在点击 i 被处理后(即在点击监听器中)为点击 i + 1 分配数据。

为了提供更具体的帮助,我们需要知道您的用户界面应该是什么样子(有多少什么类型的小部件)以及每个小部件的行为方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多