Commit 8d4a1791 by likorn

United ResponseCorrect and ResponseWrong fragments

parent 4a6665cc
...@@ -12,6 +12,7 @@ import androidx.core.view.get ...@@ -12,6 +12,7 @@ import androidx.core.view.get
import androidx.test.espresso.ViewAction import androidx.test.espresso.ViewAction
import androidx.test.espresso.UiController import androidx.test.espresso.UiController
import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.* import androidx.test.espresso.matcher.ViewMatchers.*
import junit.framework.Assert.assertNotNull import junit.framework.Assert.assertNotNull
import junit.framework.Assert.assertTrue import junit.framework.Assert.assertTrue
...@@ -33,9 +34,8 @@ class MainActivityTest { ...@@ -33,9 +34,8 @@ class MainActivityTest {
val correctAnswerIndex = getCorrectAnswerIndex() val correctAnswerIndex = getCorrectAnswerIndex()
val correctAnswerId = radioGroup[correctAnswerIndex].id val correctAnswerId = radioGroup[correctAnswerIndex].id
onView(withId(correctAnswerId)).perform(click()) onView(withId(correctAnswerId)).perform(click())
onView(withId(R.id.tv_response))
assertTrue(testRule.activity.supportFragmentManager.fragments.size == 1) .check(matches(withText(testRule.activity.resources.getString(R.string.response_correct))))
assertTrue(testRule.activity.supportFragmentManager.fragments[0] is ResponseCorrectFragment)
} }
@Test @Test
...@@ -44,9 +44,8 @@ class MainActivityTest { ...@@ -44,9 +44,8 @@ class MainActivityTest {
val wrongAnswerIndex = if (correctAnswerIndex == 3) 2 else 3 val wrongAnswerIndex = if (correctAnswerIndex == 3) 2 else 3
val wrongAnswerId = radioGroup[wrongAnswerIndex].id val wrongAnswerId = radioGroup[wrongAnswerIndex].id
onView(withId(wrongAnswerId)).perform(click()) onView(withId(wrongAnswerId)).perform(click())
onView(withId(R.id.tv_response))
assertTrue(testRule.activity.supportFragmentManager.fragments.size == 1) .check(matches(withText(testRule.activity.resources.getString(R.string.response_wrong))))
assertTrue(testRule.activity.supportFragmentManager.fragments[0] is ResponseWrongFragment)
} }
@Test @Test
......
...@@ -34,10 +34,9 @@ class MainActivity : AppCompatActivity() { ...@@ -34,10 +34,9 @@ class MainActivity : AppCompatActivity() {
timer.cancel() timer.cancel()
makeRadioButtonsUncheckable() makeRadioButtonsUncheckable()
val responseFragment: Fragment = if (numberSet.isCorrect(answer)) { val responseFragment = ResponseFragment.newInstance().also {
ResponseCorrectFragment.newInstance() f -> f.arguments = Bundle().also {
} else b -> b.putBoolean("correct", numberSet.isCorrect(answer)) } }
ResponseWrongFragment.newInstance()
supportFragmentManager supportFragmentManager
.beginTransaction() .beginTransaction()
......
package com.example.quickmax package com.example.quickmax
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
class ResponseCorrectFragment: Fragment() { class ResponseFragment: Fragment() {
private val greenColor = Color.parseColor("#4CAF50")
private val redColor = Color.parseColor("#F44336")
companion object { companion object {
fun newInstance(): ResponseCorrectFragment { fun newInstance(): ResponseFragment {
return ResponseCorrectFragment() return ResponseFragment()
} }
} }
override fun onCreateView(inflater: LayoutInflater, override fun onCreateView(inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle?): View? { savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_response_correct, container, false) val view = inflater.inflate(R.layout.fragment_response, container, false)
val correct = arguments!!.getBoolean("correct")
return if (correct)
view(view, greenColor, R.string.response_correct)
else
view(view, redColor, R.string.response_wrong)
}
private fun view(view: View, color: Int, responseId: Int): View {
view.findViewById<TextView>(R.id.tv_response).text = resources.getString(responseId)
view.findViewById<ConstraintLayout>(R.id.response_layout).setBackgroundColor(color)
view.findViewById<ImageButton>(R.id.btn_next).setOnClickListener { reloadActivity() } view.findViewById<ImageButton>(R.id.btn_next).setOnClickListener { reloadActivity() }
return view return view
} }
......
package com.example.quickmax
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
class ResponseWrongFragment: Fragment() {
companion object {
fun newInstance(): ResponseWrongFragment {
return ResponseWrongFragment()
}
}
override fun onCreateView(inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_response_wrong, container, false)
}
}
\ No newline at end of file
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
android:id="@+id/response_layout" android:id="@+id/response_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="120dp" android:layout_height="120dp"
android:background="#F44336"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintStart_toStartOf="parent">
...@@ -24,10 +23,10 @@ ...@@ -24,10 +23,10 @@
app:srcCompat="@drawable/ic_double_arrow" /> app:srcCompat="@drawable/ic_double_arrow" />
<TextView <TextView
android:id="@+id/tv_response"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:text="@string/response_wrong"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="30sp" android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/response_layout"
android:layout_width="match_parent"
android:layout_height="120dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:background="#4CAF50"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageButton
android:id="@+id/btn_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="8dp"
android:background="#009C27B0"
android:tint="#FFFFFF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_double_arrow" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="@string/response_correct"
android:textColor="@android:color/white"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment