내가 어떤 이유로, 프로그램이 아래 ...안드로이드에 버그가 있습니까?
listIntercedeOut
에 값 4와 0을 추가해야 내이 프로그램을 조건 검증을 통해 지나가는 옆 조건의 라인을 실행 추측하지만 후 바로 제거 우리는 모두 01을 사용하지 않으면 우리는 빈 for()
직후 listIntercedeOut.add()
방법을 넣으면 ...
목록에 추가, 그것은 또한 ...
을 한 후 을 제거하지 않습니다 2,343,393,661,355,562,793,732,573,210 라인 내 메인 프로그램에서 수정을 많이했습니다,
나는 목록의 값을 확인하기 위해 텍스트 뷰와 버튼과 약간의 인터페이스를했습니다 ... 코드 중 하나를 작동 코드에 댓글을 달았습니다. .. "거의 빈 상태"조건이 필요합니다.
또한이 예제에서는 intercede(boolean)
메서드가 항상 true를 반환합니다.
AddDisciplina.java :
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.SparseArray;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class AddDisciplina extends AppCompatActivity {
Button buttonCheck;
TextView text;
private List<Integer> listIntercedeIn = new ArrayList<>();
private List<Integer> listIntercedeOut = new ArrayList<>();
private SparseArray<String> sparseSeg=new SparseArray<>();
String time = "00:00";
String time2 = "01:30";
int var = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_add_disciplina);
if(getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
getSupportActionBar().setHomeButtonEnabled(true);
buttonCheck = (Button)findViewById(R.id.buttonCheck);
text = (TextView)findViewById(R.id.text);
buttonCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String items="";
for(int i = 0; i < listIntercedeOut.size(); i++){
items = items + "-" + String.valueOf(listIntercedeOut.get(i));
}
text.setText(items);
}
});
sparseSeg.put(0, "01:00/02:00");
sparseSeg.put(4, "00:00/01:30");
abrirTimePicker(false);
}
private void abrirTimePicker(final boolean inicio){
if(inicio) {
if (time.equals("")) {
}
} else {
if((1<0)||(1==0 && 30<=0)){
}
switch (var){
case 3:
for (int i = 0; i < sparseSeg.size(); i++) {
String[] hs = sparseSeg.valueAt(i).split("/");
int idDoLL = sparseSeg.keyAt(i);
if ((inicio && !hs[1].equals("vazio") && intercede(hs[0], hs[1], time, time2)) ||
(!inicio && !hs[1].equals("vazio") && intercede(time, time2, hs[0], hs[1]))) {
if (inicio) { // DO SOMETHING
} else {
// SHOULD ALWAYS END HERE //
listIntercedeOut.add(4);
listIntercedeOut.add(idDoLL);
// IF WE RELEASE THIS FOR, EVERYTHING WORKS FINE
/*for(i = 1; i < listIntercedeOut.size(); i++) {
}*/
}
} else if (inicio && listIntercedeIn.contains(4) && listIntercedeIn.contains(0)) {
listIntercedeIn.remove(Integer.valueOf(4));
listIntercedeIn.remove(Integer.valueOf(idDoLL));
} else if (!inicio && listIntercedeOut.contains(4) && listIntercedeOut.contains(0)) {
// IF WE DISABLE THE FOLLOWING 2 LINES, EVERYTHING WORKS FINE
listIntercedeOut.remove(Integer.valueOf(4));
listIntercedeOut.remove(Integer.valueOf(0));
}
}
break;
}
}
}
private boolean intercede (String horario1, String horario2, String horario3, String horario4){
String[] hm1 = horario1.split(":");
int horas1 = Integer.parseInt(hm1[0]);
int minutos1 = Integer.parseInt(hm1[1]);
int ms1 = (horas1 * 3600000) + (minutos1 * 60000);
String[] hm2 = horario2.split(":");
int horas2 = Integer.parseInt(hm2[0]);
int minutos2 = Integer.parseInt(hm2[1]);
int ms2 = (horas2 * 3600000) + (minutos2 * 60000);
String[] hm3 = horario3.split(":");
int horas3 = Integer.parseInt(hm3[0]);
int minutos3 = Integer.parseInt(hm3[1]);
int ms3 = (horas3 * 3600000) + (minutos3 * 60000);
String[] hm4 = horario4.split(":");
int horas4 = Integer.parseInt(hm4[0]);
int minutos4 = Integer.parseInt(hm4[1]);
int ms4 = (horas4 * 3600000) + (minutos4 * 60000);
return (ms1<ms3 && ms3<ms2) || (ms1<ms4 && ms4<ms2);
}
}
add_disciplina_layout.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text"/>
<Button
android:id="@+id/buttonCheck"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CHECK LIST"/>
</LinearLayout>
사람이 여기에 무슨 일이 일어나고 있는지 설명해 주시겠습니까? 미리 감사드립니다
하지만 만약 내가 "릴리스"그()에 즉, 값이 목록에 넣어 주석 ... 그래서 사실은 바로 그 조건 = ( –
도달하고, 당신이 옳았다. 첫 번째 루프는 CONDITION 1에, 두 번째 루프는 CONDITION 3 ... 중간에있는 for()는 첫 번째 루프에서 i = 0 값을 변경했으며 두 번째 ... 대단히 감사합니다. (: –
당신은 환영합니다 :) 이 답변으로 문제가 해결되면 체크 표시를 클릭하고 위 표를 통해 수락하는 것을 고려하십시오. 해결책을 찾았습니다. 이럴 필요는 없습니다. – Cochi