마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

함수에서 분기하는 법 질문입니다 [closed]

0 추천

4개의 버튼이 있고 각각 버튼을 누르면 같은 함수가 호출되어 다이얼로그가 생성되는데

만약 Break버튼을 눌러서 호출했을때는 Breakname,breakcal 이곳에 값이 입력되고,

다른 버튼을 눌러서 호출하면 각각의 맞는 edittext에 입력할 수 있게 하려하는데 어떻게 할까요

Break.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        fooddialog();
    }
});
Lunch.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        fooddialog();
    }
});
Dinner.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        fooddialog();
    }
});
Exercise.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        fooddialog();
    }
});
 
public void fooddialog() {
    AlertDialog.Builder fd = new AlertDialog.Builder(Add.this);
    fd.setTitle("Food");

    fd.setItems(foodarr, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            String namecal = foodarr[i];
            int idx1 = namecal.indexOf("/");
            int idx2 = namecal.indexOf("Kcal");

            String name = namecal.substring(0, idx1);
            String cal = namecal.substring(idx1 + 1, idx2);
// break버튼을 눌렀을시
            BreakName.setText(name);
            BreakCal.setText(cal);
//lunch 버튼을 눌럿을시
            LunchName.setText(name);
            LunchCal.setText(cal);

            DinnerName.setText(name);
            DinnerCal.setText(cal);

            ExerName.setText(name);
            ExerCal.setText(cal);
        }
    });
    fd.show();

}
질문을 종료한 이유: 해결
gucjieed01 (300 포인트) 님이 2021년 4월 7일 질문
gucjieed01님이 2021년 4월 7일 closed

2개의 답변

0 추천
 
채택된 답변
fooddialog(boolean fromBrake) 처럼 값을 넘겨보세요.
쎄미 (162,410 포인트) 님이 2021년 4월 7일 답변
gucjieed01님이 2021년 4월 7일 채택됨
감사합니다!!!!!!!!!!!
0 추천

콜백을 사용하는 게 여러모로 유연해서 좋을 듯 합니다. DialogHelper 같은 클래스를 별도로 만들어서 앱에서 필요한 Dialog들만 관리하도록 하면 더 좋을 것 같구요.

Break.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        foodDialog { foodInfo ->
              BreakName.setText(foodInfo.getName());
              BreakCal.setText(foodInfo.getCalorie());
        };
    }
});
Lunch.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        foodDialog { foodInfo ->
              LunchName.setText(foodInfo.getName());
              LunchCal.setText(foodInfo.getCalorie());
        };
    }
});
Dinner.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        foodDialog { foodInfo ->
              DinnerName.setText(foodInfo.getName());
              DinnerCal.setText(foodInfo.getCalorie());
        };
    }
});


public class FoodIinfo {
    private final String name;
    private final String calorie;
   
    public FoodIinfo(String name, String calorie) {
       this.name = name;
       this.calorie = calorie;
    }

    public String getName() {
       return this.name;
    }

    public String getCalorie() {
       return this.calorie;
    }
}


public interface FoodDialogListner {
     void onFoodClicked(FoodIinfo foodInfo);
}

public void foodDialog(listener: FoodDialogListner) {
    AlertDialog.Builder builder = new AlertDialog.Builder(Add.this);
    builder.setTitle("Food");

    builder.setItems(foodarr, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            String namecal = foodarr[i];
            int idx1 = namecal.indexOf("/");
            int idx2 = namecal.indexOf("Kcal");

            String name = namecal.substring(0, idx1);
            String cal = namecal.substring(idx1 + 1, idx2);

            listener.onFoodClicked(new FoodInfo(name, cal));
        }
    });
    builder.show();

}

 

spark (226,420 포인트) 님이 2021년 4월 7일 답변
spark님이 2021년 4월 7일 수정
감사합니다!!!!!!!!!
...