我无法在onCreate()方法中获得无限的嵌套循环

时间:2019-06-01 10:04:36

标签: java android

我是Android Studio编程的新手,我想知道什么可以替代下面的代码。 我正在尝试迭代具有嵌套循环的无限循环,但似乎无法正常工作。当涉及到该循环时,应用程序仍然会崩溃。

我还尝试了使用非无限循环而不嵌套另一个循环。

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

    while (state) {
        int i = 0;

        while (i < person[i].length) {
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    someTextView.setText(person[i].getName());
                }
            });
        }
        i++;
    }
}

下面的这个Logcat只是表示嵌套的while循环而没有 不同于代码中显示的onClickListener。

2019-06-01 11:59:10.695 19529-19529/com.example.app2 I/Timeline: Timeline: Activity_launch_request id:com.example.app2 time:120814793
2019-06-01 11:59:10.771 19529-19543/com.example.app2 I/art: Enter while loop.
2019-06-01 11:59:10.789 19529-19543/com.example.app2 I/art: Enter while loop.

进入while循环后,我得到的只是设备上的黑屏。

如何在onCreate()方法中使用这些循环?

2 个答案:

答案 0 :(得分:1)

我有几个问题。如果您想要无限循环,为什么不只是:

while(true)
{
    //Execute some code
}

我的下一个问题是,为什么要尝试这样做?黑屏的原因是您陷入了无限循环。嵌套循环的代码已执行,但是由于您要在嵌套循环之外递增i,因此您将始终返回true,因此我将始终小于person []的长度。由于无法达到结果,因此无法呈现任何内容。如果要向多个对象添加onClickListeners,则更好的方法是使用带有卡片的Recycler视图,并在Recycler适配器中分配OnclickListeners。

答案 1 :(得分:0)

假设您的目标是重复做某件事,例如每1秒,您可以使用postDelayed(...)

// Java
Handler handler = new Handler();
int delay = 1000; // milliseconds

handler.postDelayed(new Runnable() {
    public void run() {
        // do something
        handler.postDelayed(this, delay);
    }
}, delay);

来源:How to run a method every X seconds