2017-10-12 9 views
1

그래서 세 개의 텍스트 필드에이 값 (Long 및 Double)이 있습니다. 그들은 시간, 속도 및 거리를 나타냅니다.Android Kotlin이 numberfield에 numberPicker를 전달합니다.

이제 사용자 오류를 방지하기 위해 numberPickers를 사용하여 값을 선택하게하고 싶습니다. 해당 텍스트 필드를 해당 선택 도구로 바꾸고 싶습니다.

val time = timeTxtField as TextView 
    val distance = distanceTxtField as TextView 
    val pace = paceTxtField as TextView 
    var resetRunningBtn = clearBtn 
    val pickerMinutes = numberPicker as NumberPicker 
    val pickerSeconds = numberPickerSeconds as NumberPicker 

    pickerMinutes.minValue = 0 
    pickerMinutes.maxValue = 59 
    pickerMinutes.wrapSelectorWheel = false 

    pickerSeconds.minValue = 0 
    pickerSeconds.maxValue = 60 
    pickerSeconds.wrapSelectorWheel = false 




    calculateBtn.setOnClickListener { 

     when { 

      time.text.isEmpty() && (distance.text.isNotEmpty() && pace.text.isNotEmpty()) -> 
       calculatePace(null, distance.text.toString().toDouble(), pace.text.toString()) 

      distance.text.isEmpty() && (time.text.isNotEmpty() && pace.text.isNotEmpty()) -> 
       calculatePace(time.text.toString(), null, pace.text.toString()) 

      pace.text.isEmpty() && (time.text.isNotEmpty() && distance.text.isNotEmpty()) -> 
       calculatePace(time.text.toString(), distance.text.toString().toDouble(), null) 

      else -> { 
       Toast.makeText(this, "Please check fields", 
         Toast.LENGTH_SHORT).show() 
      } 
     } 
    } 

당신은 내가 설정 피커와 모두가 볼 수 있듯이 :

이 내가 가진 것입니다. 내가 .value 같은 전화하려고했지만 작동하지 않았다.

이것은 내 layout입니다. 따라서 개념을 조금 이해할 수 있습니다.

팁이 있습니까? :)

감사

편집 XML :

 <?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
tools:context="com.reecreate.woderator2.Controller.RunningCalculatorActivity"> 

<TextView 
    android:id="@+id/textView5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="8dp" 
    android:text="Running Pace Calculator" 
    android:textSize="24sp" 
    android:textStyle="bold" 
    android:inputType="numberDecimal" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toTopOf="parent" /> 

<EditText 
    android:id="@+id/distanceTxtField" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="28dp" 
    android:ems="10" 
    android:hint="distance..." 
    android:inputType="number|numberDecimal" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintHorizontal_bias="0.503" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/radioType" /> 

<EditText 
    android:id="@+id/timeTxtField" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="16dp" 
    android:ems="10" 
    android:hint="time mm:ss" 
    android:inputType="time" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/distanceTxtField" /> 

<EditText 
    android:id="@+id/paceTxtField" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="16dp" 
    android:ems="10" 
    android:hint="pace mm:ss 10:21" 
    android:inputType="time" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/timeTxtField" /> 

<RadioGroup 
    android:id="@+id/radioType" 
    android:layout_width="280dp" 
    android:layout_height="56dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="24dp" 
    android:orientation="horizontal" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/textView5"> 

    <RadioButton 
     android:id="@+id/milesDistanceRadioBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="140dp" 
     android:layout_marginTop="16dp" 
     android:text="Miles" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintLeft_toRightOf="@id/kmDistanceRadioBtn" 
     app:layout_constraintTop_toBottomOf="@id/textView5" /> 

    <RadioButton 
     android:id="@+id/kmDistanceRadioBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="16dp" 
     android:text="KM" 
     app:layout_constraintEnd_toStartOf="@+id/milesRadioBtn" 
     app:layout_constraintHorizontal_bias="0.694" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 
</RadioGroup> 

<RadioGroup 
    android:id="@+id/paceRadioGroup" 
    android:layout_width="wrap_content" 
    android:layout_height="45dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="32dp" 
    android:orientation="horizontal" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintHorizontal_bias="0.294" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/paceTxtField"> 

    <RadioButton 
     android:id="@+id/milesPaceRadioBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="140dp" 
     android:layout_marginTop="16dp" 
     android:text="MILES PACE" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintLeft_toRightOf="@id/kmDistanceRadioBtn" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <RadioButton 
     android:id="@+id/kmPaceRadioBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="16dp" 
     android:text="KM PACE" 
     app:layout_constraintEnd_toStartOf="@+id/milesDistanceRadioBtn" 
     app:layout_constraintHorizontal_bias="0.694" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 


</RadioGroup> 


<Button 
    android:id="@+id/calculateBtn" 
    style="@style/Widget.AppCompat.Button.Borderless.Colored" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:background="@color/colorAccent" 
    android:text="Calculate" 
    android:textColor="@android:color/background_light" 
    android:textStyle="bold" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" /> 


<TextView 
    android:id="@+id/result" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="24dp" 
    android:layout_marginStart="24dp" 
    android:layout_marginTop="24dp" 
    android:background="@drawable/border" 
    android:hint="Result" 
    android:textAlignment="center" 
    android:textSize="18sp" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/paceRadioGroup" /> 

<Button 
    android:id="@+id/clearBtn" 
    style="@style/Widget.AppCompat.Button.Borderless" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="24dp" 
    android:background="@color/colorAccent" 
    android:text="CLEAR" 
    android:textColor="@android:color/background_light" 
    android:textStyle="bold" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/result" /> 
<NumberPicker 
    android:id="@+id/numberPicker" 
    android:layout_width="64dp" 
    android:layout_height="119dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintHorizontal_bias="0.407" 
    app:layout_constraintTop_toBottomOf="@+id/radioType" /> 

<NumberPicker 
    android:id="@+id/numberPickerSeconds" 
    android:layout_width="64dp" 
    android:layout_height="119dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginTop="8dp" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/numberPicker" /> 

값 편집 LISTENER

나는이 추가했지만 아무것도

안하고

8,843,475,453,821,................

when { 
     pickerMinutes.isClickable -> time.setText(Integer.toString(pickedValue)) 

    } 

    numberPicker.setOnValueChangedListener { pickerMinutes, oldVal, newVal -> 
     //store values in variable for use later 
    } 
+0

XML 파일 – UltimateDevil

+0

을 게시 할 수 있습니까? 편집 중 – MirandaBy

+0

좋아, 체크하자 – UltimateDevil

답변

0

몇 가지 일반적인 코 틀린 것들 참고 사항 : 당신이 변수를 설정하고를 수 선택기를 캐스팅 참조하십시오. 당신은 이것을 할 필요가 없습니다. Kotlin에서 올바른 가져 오기를 사용하여 kotlinx.android.synthetic.main.my_layout_file.*과 같이 캐스팅하지 않고 해당 ID로 xml을 호출 할 수 있습니다 (예 : numberPicker). TextView과 같은 다른 항목에도 적용됩니다.

다른 것은 Integer.toString(pickedValue)으로 전화하지 않아도된다는 것입니다. pickedValue.toString()으로 전화하면됩니다. 나는 정확히 볼 수 없습니다 오전부터

마지막으로, 당신은 응용 프로그램을 테스트하는 방법, 내 제안 할 것이다 다음

var numPickerVal = 0; 
var secondsPickerVal = 0; 

그런 설정 :

피커 값을 저장하는 변수를 만듭니다 각 피커의 변경 리스너 :

numberPicker.setOnValueChangedListener { picker, oldVal, newVal -> 
    numPickerVal = newVal 
} 
numberPickerSeconds.setOnValueChangedListener { picker, oldVal, newVal -> 
    secondsPickerVal = newVal 
} 
+0

안녕하세요, 감사합니다 ... 내 번즈에 액세스하지 않는다고 말했습니까? 그건 이상한 일입니다. – MirandaBy

+0

불행히도 모든 코드를 코딩 할 수는 없습니다. 컴파일 문제를 해결하고 계속 디버그해야합니다. 나는 아마 안드로이드 개발에서의 사용뿐만 아니라 일반적으로 Kotlin에 관해 더 많은 시간을 배울 것을 제안한다. –

+0

hm ok. 감사 – MirandaBy