我是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()方法中使用这些循环?
答案 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);