From 0704049b635311540c75acb4a400a9a1a6ce3d91 Mon Sep 17 00:00:00 2001 From: xStiven Date: Mon, 28 Nov 2022 14:21:51 +0200 Subject: [PATCH] lastcommit all --- .idea/.name | 1 + .idea/androidTestResultsUserPreferences.xml | 47 +++++++ .idea/deploymentTargetDropDown.xml | 17 --- app/build.gradle | 13 +- app/google-services.json | 39 ++++++ .../com/example/Lab3/EspressoMainTest.java | 59 ++++++++- .../java/com/example/Lab3/LoginTest.java | 114 ++++++++++++++++ .../java/com/example/Lab3/ResultTest.java | 93 +++++++++++++ .../java/com/example/Lab3/ToastMatcher.java | 36 +++++ app/src/main/AndroidManifest.xml | 29 +++-- .../java/com/example/Lab3/LoginActivity.java | 123 ++++++++++++++++++ .../java/com/example/Lab3/MainActivity.java | 24 +++- .../java/com/example/Lab3/ResultActivity.java | 9 ++ .../java/com/example/Lab3/StartActivity.java | 5 +- app/src/main/res/drawable-v24/loginbkg.png | Bin 0 -> 58134 bytes app/src/main/res/layout/activity_login.xml | 94 +++++++++++++ app/src/main/res/layout/activity_main.xml | 4 + app/src/main/res/values/colors.xml | 1 + .../com/example/Lab3/MainActivityTest.java | 61 ++++++++- build.gradle | 3 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 21 files changed, 730 insertions(+), 44 deletions(-) create mode 100644 .idea/.name delete mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 app/google-services.json create mode 100644 app/src/androidTest/java/com/example/Lab3/LoginTest.java create mode 100644 app/src/androidTest/java/com/example/Lab3/ResultTest.java create mode 100644 app/src/androidTest/java/com/example/Lab3/ToastMatcher.java create mode 100644 app/src/main/java/com/example/Lab3/LoginActivity.java create mode 100644 app/src/main/res/drawable-v24/loginbkg.png create mode 100644 app/src/main/res/layout/activity_login.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..ece1c9b --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Lab3 \ No newline at end of file diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml index a8f887d..02d601b 100644 --- a/.idea/androidTestResultsUserPreferences.xml +++ b/.idea/androidTestResultsUserPreferences.xml @@ -9,14 +9,61 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index e093846..0000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 5f64eb7..e31912c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,6 @@ plugins { id 'com.android.application' + id 'com.google.gms.google-services' } android { @@ -32,18 +33,24 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + implementation 'com.google.firebase:firebase-auth:21.1.0' testImplementation 'junit:junit:4.+' - testImplementation 'org.junit.jupiter:junit-jupiter' + testImplementation 'org.junit.jupiter:junit-jupiter:5.8.0' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test:runner:1.4.0' androidTestImplementation 'androidx.test:rules:1.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + androidTestImplementation 'androidx.test.espresso:espresso-intents:3.4.0' + androidTestImplementation 'org.mockito:mockito-core:2.+' testImplementation 'androidx.test:core:1.4.0' testImplementation 'androidx.test.ext:junit:1.1.3' - testImplementation 'junit:junit:4.12' - testImplementation 'org.robolectric:robolectric' + testImplementation 'junit:junit:4.+' + testImplementation 'org.robolectric:robolectric:4.8' testImplementation 'androidx.test.espresso:espresso-intents:3.4.0' testImplementation 'androidx.test.ext:truth:1.4.0' + testImplementation "org.mockito:mockito-core:3.5.0" + + } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..948082a --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,39 @@ +{ + "project_info": { + "project_number": "97756466887", + "project_id": "lab3-23376", + "storage_bucket": "lab3-23376.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:97756466887:android:bd9a3b28cbcab2d40278e2", + "android_client_info": { + "package_name": "com.example.testAndroid" + } + }, + "oauth_client": [ + { + "client_id": "97756466887-men8n7vp3sb52lhmtgc9cl9mu0v17h6n.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyA60VFxjN__i_RhzdGsf9Zk0LRU6ANK5I0" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "97756466887-men8n7vp3sb52lhmtgc9cl9mu0v17h6n.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/Lab3/EspressoMainTest.java b/app/src/androidTest/java/com/example/Lab3/EspressoMainTest.java index 6ec7b79..fd2076a 100644 --- a/app/src/androidTest/java/com/example/Lab3/EspressoMainTest.java +++ b/app/src/androidTest/java/com/example/Lab3/EspressoMainTest.java @@ -1,11 +1,15 @@ package com.example.Lab3; import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import androidx.test.espresso.NoMatchingViewException; import androidx.test.espresso.action.ViewActions; import androidx.test.espresso.matcher.ViewMatchers; import androidx.test.ext.junit.rules.ActivityScenarioRule; @@ -18,6 +22,7 @@ import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard; import static androidx.test.espresso.action.ViewActions.typeText; import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isClickable; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; @@ -26,17 +31,65 @@ @RunWith(AndroidJUnit4.class) @SmallTest public class EspressoMainTest { + + @Rule public ActivityScenarioRule activityRule = new ActivityScenarioRule<>(MainActivity.class); + @Test - public void listGoesOverTheFold() { + public void IsTimerOn() { onView(withId(R.id.time)).check(matches(isDisplayed())); } + @Test - public void listGoesOverTheFold2() { - onView(withId(R.id.time)).check(matches(isDisplayed())); + public void IsYesButtonVisible(){ + for (int i=0; i<10; i++){ + onView(withId(R.id.yes_btn)).perform(click()); + } + onView(withId(R.id.points)).check(matches(withText("10"))); + } + @Test + public void IsNoButtonVisible(){ + onView(withId(R.id.no_btn)).check(matches(isClickable())); + + for (int i=0; i<10; i++){ + onView(withId(R.id.no_btn)).perform(click()); + } + onView(withId(R.id.points)).check(matches(withText("0"))); + + } + + @Test + public void IsQuestionVisible() { + onView(withId(R.id.roolsView)) + .check(matches(isDisplayed())) + .check(matches(withText("Чи співпадає назва кольору ліворуч з кольором текста праворуч?"))); + } + + @Test + public void IsGameEndsInMinute() throws InterruptedException { + int clickCount = 5; + for (int i = 0; i < clickCount; i++){ + onView(withId(R.id.yes_btn)).perform(click()); + } + onView(withId(R.id.points)).check(matches(withText("5"))); + Thread.sleep(55 * 1000); + int TIMEOUT = 10 * 1000; + int CONDITION_CHECK_INTERVAL = 100; + + long startTime = System.currentTimeMillis(); + try { + while(System.currentTimeMillis() - startTime < TIMEOUT) { + onView(withId(R.id.roolsView)).check(matches(isDisplayed())); + Thread.sleep(CONDITION_CHECK_INTERVAL); + } + } catch (NoMatchingViewException e){ + onView(withId(R.id.result_string)).check(matches(withText("Ваш результат:"))); + onView(withId(R.id.result)).check(matches(withText("5"))); + } + } } diff --git a/app/src/androidTest/java/com/example/Lab3/LoginTest.java b/app/src/androidTest/java/com/example/Lab3/LoginTest.java new file mode 100644 index 0000000..a79b0d2 --- /dev/null +++ b/app/src/androidTest/java/com/example/Lab3/LoginTest.java @@ -0,0 +1,114 @@ +package com.example.Lab3; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.intent.Intents.intended; +import static androidx.test.espresso.intent.Intents.intending; +import static androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent; +import static androidx.test.espresso.intent.matcher.IntentMatchers.toPackage; +import static androidx.test.espresso.matcher.RootMatchers.withDecorView; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; + +import android.app.Activity; +import android.app.Instrumentation; +import android.content.Intent; +import android.os.IBinder; +import android.view.View; +import android.view.WindowManager; + +import androidx.test.core.app.ActivityScenario; +import androidx.test.espresso.Root; +import androidx.test.espresso.action.TypeTextAction; +import androidx.test.espresso.intent.Intents; +import androidx.test.ext.junit.rules.ActivityScenarioRule; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.filters.SmallTest; + +import org.hamcrest.Matchers; +import org.hamcrest.TypeSafeMatcher; +import org.junit.After; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; + +import org.hamcrest.Description; + + +@RunWith(AndroidJUnit4.class) +@SmallTest +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class LoginTest { + private View decorView; + @Rule + public ActivityScenarioRule activityRule = + new ActivityScenarioRule<>(LoginActivity.class); + + @Test + public void IsEmailFieldVisible() { + onView(withId(R.id.username)).check(matches(isDisplayed())); + } + @Test + public void IsPasswordFieldVisible() { + onView(withId(R.id.password)).check(matches(isDisplayed())); + } + + + @Before + public void intentInit(){ + Intents.init(); + } + + @Test + public void TryRightLogin() throws InterruptedException { + onView(withId(R.id.username)).perform(new TypeTextAction("test@gmail.com"), closeSoftKeyboard()); + onView(withId(R.id.password)).perform(new TypeTextAction("123456"), closeSoftKeyboard()); +// onView(withId(R.id.password)).perform(closeSoftKeyboard()); + Thread.sleep(250); + onView(withId(R.id.loginButton)).perform(click()); + + Intent i = new Intent(); + Instrumentation.ActivityResult result = new Instrumentation.ActivityResult(Activity.RESULT_OK, i); + intending(toPackage(StartActivity.class.getName())); + + + } + + @After + public void intentRelease(){ + Intents.release(); + } + + @Test + public void TryWrongLogin() throws InterruptedException { + onView(withId(R.id.username)).perform(new TypeTextAction("test1@gmail.com"), closeSoftKeyboard()); + onView(withId(R.id.password)).perform(new TypeTextAction("123456"), closeSoftKeyboard()); + Thread.sleep(250); + onView(withId(R.id.loginButton)).perform(click()); + + + onView(withText("Authentication failed.")) + .inRoot(new ToastMatcher())// Here we use decorView + .check(matches(isDisplayed())); + + +// onView(withText("Authentication failed.")) +// .inRoot(withDecorView(Matchers.is(decorView)))// Here we use decorView +// .check(matches(isDisplayed())); + + +// onView(withId(R.id.checklogin)).check(matches(withText("False"))); + + + + } + + + +} diff --git a/app/src/androidTest/java/com/example/Lab3/ResultTest.java b/app/src/androidTest/java/com/example/Lab3/ResultTest.java new file mode 100644 index 0000000..a612d0a --- /dev/null +++ b/app/src/androidTest/java/com/example/Lab3/ResultTest.java @@ -0,0 +1,93 @@ +package com.example.Lab3; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; + +import static org.junit.Assert.assertEquals; + +import android.content.Context; +import android.content.Intent; + +import androidx.lifecycle.Lifecycle; +import androidx.test.espresso.ViewInteraction; +import androidx.test.ext.junit.rules.ActivityScenarioRule; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.filters.SmallTest; +import androidx.test.platform.app.InstrumentationRegistry; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; + + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class ResultTest { + + @Rule + public ActivityScenarioRule activityRule; + + public ResultTest() { + // predefine state + Context ctx = InstrumentationRegistry.getInstrumentation().getTargetContext(); + Intent intent = new Intent(ctx, ResultActivity.class); + intent.putExtra("result", "5"); + activityRule = new ActivityScenarioRule(intent); + } + + @Ignore + @Test + public void TestIntentMock() { + + Context context = Mockito.mock(Context.class); + Intent intent = ResultActivity.createIntent(context, "5"); + Assert.assertNotNull(intent); + + Assert.assertEquals("5", intent.getStringExtra("result")); + + } + + @Test + public void IsTextRight() { + onView(withId(R.id.result_string)).check(matches(withText("Ваш результат:"))); + } + + @Test + public void IsResultRight () { + onView(withId(R.id.result)).check(matches(withText("5"))); + } + + @Test + public void IsTextPlayMoreRight() { + ViewInteraction playMoreBtn = onView(withId(R.id.play_btn)); + playMoreBtn.check(matches(withText(R.string.play_btn_text))); + + playMoreBtn.perform(click()); + onView(withText(R.string.rools_text)).check(matches(isDisplayed())); + + + } + + @Test + public void IsTextGoBackRight() { + ViewInteraction mainBtn = onView(withId(R.id.main_btn)).check(matches(withText(R.string.main_btn_text))); + mainBtn.perform(click()); + onView(withId(R.id.start_btn)).check(matches(isDisplayed())); + } + + @Test + public void IsTextExitRight () throws InterruptedException { + ViewInteraction exitBtn = onView(withId(R.id.exit_btn)).check(matches(withText(R.string.exit_btn_text))); + + exitBtn.perform(click()); + Thread.sleep(500); + assertEquals(activityRule.getScenario().getState(), Lifecycle.State.DESTROYED); + } +} diff --git a/app/src/androidTest/java/com/example/Lab3/ToastMatcher.java b/app/src/androidTest/java/com/example/Lab3/ToastMatcher.java new file mode 100644 index 0000000..8ba7236 --- /dev/null +++ b/app/src/androidTest/java/com/example/Lab3/ToastMatcher.java @@ -0,0 +1,36 @@ +package com.example.Lab3; + +import android.os.IBinder; +//import android.provider.DocumentsContract; +//import android.provider.DocumentsContract.Root; +import android.view.WindowManager; + +//import androidx.test.espresso.Root; + +import androidx.test.espresso.Root; + +import org.hamcrest.Description; +import org.hamcrest.TypeSafeMatcher; + +public class ToastMatcher extends TypeSafeMatcher { + + @Override + public void describeTo(Description description) { +// super.describeTo(description); + description.appendText("is toast"); + } + + @Override + public boolean matchesSafely(Root root) { + int type = root.getWindowLayoutParams().get().type; + if ((type == WindowManager.LayoutParams.TYPE_TOAST)) { + IBinder windowToken = root.getDecorView().getWindowToken(); + IBinder appToken = root.getDecorView().getApplicationWindowToken(); + if (windowToken == appToken) { + //means this window isn't contained by any other windows. + return true; + } + } + return false; + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ded0189..bffdb3f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.example.Lab3" > + android:theme="@style/Theme.Lab3" > + android:name=".LoginActivity" + android:exported="true" > + + + + + + + + + @@ -19,8 +32,8 @@ + android:name=".MainActivity" + android:exported="true" > @@ -28,8 +41,8 @@ + android:name=".ResultActivity" + android:exported="true" > diff --git a/app/src/main/java/com/example/Lab3/LoginActivity.java b/app/src/main/java/com/example/Lab3/LoginActivity.java new file mode 100644 index 0000000..36d0fa6 --- /dev/null +++ b/app/src/main/java/com/example/Lab3/LoginActivity.java @@ -0,0 +1,123 @@ +package com.example.Lab3; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; + +public class LoginActivity extends AppCompatActivity { + EditText username; + EditText password; + TextView signup; + TextView checklogin; + + Button loginButton; + private FirebaseAuth mAuth; + private String email_val, password_val; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + username = findViewById(R.id.username); + password = findViewById(R.id.password); + loginButton = findViewById(R.id.loginButton); + signup = findViewById(R.id.signupText); + checklogin = findViewById(R.id.checklogin); + mAuth = FirebaseAuth.getInstance(); + + //checking if user is logged in + if (mAuth.getCurrentUser() != null) { + updateUI(mAuth.getCurrentUser()); + } + + + + loginButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { +// if (username.getText().toString().equals("user") && password.getText().toString().equals("1234")) { +// Toast.makeText(LoginActivity.this, "Login Successful!", Toast.LENGTH_SHORT).show(); +// } else { +// Toast.makeText(LoginActivity.this, "Login Failed!", Toast.LENGTH_SHORT).show(); +// } + + email_val = username.getText().toString(); + password_val = password.getText().toString(); + mAuth.signInWithEmailAndPassword(email_val, password_val) + .addOnCompleteListener(LoginActivity.this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + // Sign in success, update UI with the signed-in user's information + Log.d("LoginActivity", "signInWithEmail:success"); + FirebaseUser user = mAuth.getCurrentUser(); + checklogin.setText("True"); + updateUI(user); + } else { + // If sign in fails, display a message to the user. + Log.w("LoginActivity", "signInWithEmail:failure", task.getException()); + checklogin.setText("False"); + Toast.makeText(getApplicationContext(), "Authentication failed.", + Toast.LENGTH_LONG).show(); + } + + // ... + } + + + }); + } + }); + + + signup.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View v) { + Intent registerIntent = new Intent(getApplicationContext(), StartActivity.class); + startActivity(registerIntent); + } + }); + } + + + @Override + public void onStart() { + super.onStart(); + // Check if user is signed in (non-null) and update UI accordingly. + FirebaseUser currentUser = mAuth.getCurrentUser(); + if (currentUser != null) { + updateUI(currentUser); + } + } + + @Override + protected void onResume() { + super.onResume(); + // Check if user is signed in (non-null) and update UI accordingly. + FirebaseUser currentUser = mAuth.getCurrentUser(); + if (currentUser != null) { + updateUI(currentUser); + } + } + + public void updateUI(FirebaseUser currentUser) { + Intent profileIntent = new Intent(getApplicationContext(), StartActivity.class); + profileIntent.putExtra("email", currentUser.getEmail()); + Log.v("DATA", currentUser.getUid()); + startActivity(profileIntent); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/Lab3/MainActivity.java b/app/src/main/java/com/example/Lab3/MainActivity.java index 968d2a7..29900c3 100644 --- a/app/src/main/java/com/example/Lab3/MainActivity.java +++ b/app/src/main/java/com/example/Lab3/MainActivity.java @@ -49,10 +49,11 @@ protected void onCreate(Bundle savedInstanceState) { onYesClick(); onNoClick(); + SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putInt(getString(R.string.testing_mode), 0); - editor.apply(); + int status = 1; + + setTestMode(sharedPref, status); time = (TextView) findViewById(R.id.time); new CountDownTimer(60000, 1000){ @@ -67,14 +68,27 @@ public void onTick(long l){ @Override public void onFinish(){ time.setText("00:00"); - Intent intent = new Intent(MainActivity.this, ResultActivity.class); - intent.putExtra("result", points.getText()); + Intent intent = createIntent(MainActivity.this, points.getText()); + finish(); startActivity(intent); } }.start(); } + static public Intent createIntent(Context context, CharSequence points){ + Intent i = new Intent(context, ResultActivity.class); + i.putExtra("result", points); + return i; + } + + static public void setTestMode(SharedPreferences sharedPref, int status){ +// SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPref.edit(); + editor.putInt("testing_mode", status); + editor.apply(); + } + static public Map array2dict(String[] tags) { Map dictionary = new HashMap(); for (String tag : tags) { diff --git a/app/src/main/java/com/example/Lab3/ResultActivity.java b/app/src/main/java/com/example/Lab3/ResultActivity.java index 12d9d07..eb41d6d 100644 --- a/app/src/main/java/com/example/Lab3/ResultActivity.java +++ b/app/src/main/java/com/example/Lab3/ResultActivity.java @@ -2,6 +2,7 @@ import androidx.appcompat.app.AppCompatActivity; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; @@ -58,4 +59,12 @@ public void onClick(View view) { } ); } + + static public Intent createIntent(Context context, CharSequence points){ + Intent i = new Intent(context, ResultActivity.class); + i.putExtra("result", points); + return i; + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/Lab3/StartActivity.java b/app/src/main/java/com/example/Lab3/StartActivity.java index a9edc90..0e1f56d 100644 --- a/app/src/main/java/com/example/Lab3/StartActivity.java +++ b/app/src/main/java/com/example/Lab3/StartActivity.java @@ -38,7 +38,10 @@ public void onClick(View view) { new View.OnClickListener() { @Override public void onClick(View view) { - finish(); + Intent intent = new Intent(StartActivity.this, LoginActivity.class); + //finish(); + startActivity(intent); + } } ); diff --git a/app/src/main/res/drawable-v24/loginbkg.png b/app/src/main/res/drawable-v24/loginbkg.png new file mode 100644 index 0000000000000000000000000000000000000000..056d4268a9e48a055dfbbfdbdd13768f5616d32c GIT binary patch literal 58134 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 + + + + + + + + + +