diff --git a/.gitignore b/.gitignore index aa724b7..ef21e5d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ .externalNativeBuild .cxx local.properties +app/release +/.idea/inspectionProfiles/Project_Default.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 34e59f8..d2713c5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,6 +14,12 @@ android:supportsRtl="true" android:theme="@style/Theme.Android101" tools:targetApi="31"> + + @@ -32,7 +38,6 @@ - + - - - - - \ No newline at end of file diff --git a/app/src/main/java/uk/kagurach/android101/MainActivity.java b/app/src/main/java/uk/kagurach/android101/MainActivity.java index 9f15a48..a9c83c7 100644 --- a/app/src/main/java/uk/kagurach/android101/MainActivity.java +++ b/app/src/main/java/uk/kagurach/android101/MainActivity.java @@ -64,7 +64,7 @@ public class MainActivity extends AppCompatActivity { textViewAppendString(tv,"*************************\nfinished"); // Initialize Page Helper - pageHelper = new PageHelper(this,null,MainActivity2.class); + pageHelper = new PageHelper(this,null,MainActivity2.class,this); Button button = findViewById(R.id.Page1NextPage); button.setEnabled(true); diff --git a/app/src/main/java/uk/kagurach/android101/Page4.java b/app/src/main/java/uk/kagurach/android101/Page4.java index 6e46dde..21c30b3 100644 --- a/app/src/main/java/uk/kagurach/android101/Page4.java +++ b/app/src/main/java/uk/kagurach/android101/Page4.java @@ -1,8 +1,17 @@ package uk.kagurach.android101; +import android.app.Activity; +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; import androidx.activity.EdgeToEdge; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; @@ -11,6 +20,8 @@ import androidx.core.view.WindowInsetsCompat; public class Page4 extends AppCompatActivity { PageHelper pageHelper; + ActivityResultLauncher mLauncher; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -21,6 +32,47 @@ public class Page4 extends AppCompatActivity { v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); + pageHelper = new PageHelper(this, Page3.class,Page5.class); + Button askAI = findViewById(R.id.P4AskAI); + askAI.setOnClickListener(new ButtonHandler()); + Button nextPage = findViewById(R.id.P4PageButton); + nextPage.setOnClickListener(pageHelper.pageButtonHandler); + nextPage.setOnLongClickListener(pageHelper.longClickHandler); + + mLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result!=null && result.getResultCode() == RESULT_OK ){ + assert result.getData() != null; + Bundle bundle = result.getData().getExtras(); + if (bundle!=null) { + String response = bundle.getString("reply"); + TextView tv = findViewById(R.id.P4Result); + tv.setText(response); + } + } + } + ); + } + + + private void callOtherActivity(){ + EditText editText = findViewById(R.id.P4Ask); + String request = editText.getText().toString(); + + Intent intent = new Intent(this,Page4OtherActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("request_content",request); + intent.putExtras(bundle); + mLauncher.launch(intent); + } + + private final class ButtonHandler implements View.OnClickListener + { + @Override + public void onClick(View v){ + callOtherActivity(); + } } diff --git a/app/src/main/java/uk/kagurach/android101/Page4OtherActivity.java b/app/src/main/java/uk/kagurach/android101/Page4OtherActivity.java new file mode 100644 index 0000000..20976a6 --- /dev/null +++ b/app/src/main/java/uk/kagurach/android101/Page4OtherActivity.java @@ -0,0 +1,44 @@ +package uk.kagurach.android101; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.TextView; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +public class Page4OtherActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bundle bundle = getIntent().getExtras(); + if (bundle == null) throw new NullPointerException(); + String content = bundle.getString("request_content"); + if (content!=null){ + content = content.replace("?","?") + .replace("?","!") + .replace("你","我") + .replace("吗",""); + if (!content.contains("!")){ + content = "对不起我不知道"; + } + }else { + content = "对不起坏掉了"; + } + + Intent intent = new Intent(); + Bundle bundle1 = new Bundle(); + bundle1.putString("reply",content); + intent.putExtras(bundle1); + setResult(RESULT_OK,intent); + finish(); + } + + private void reply(String s){ + + } +} \ No newline at end of file diff --git a/app/src/main/java/uk/kagurach/android101/Page5.java b/app/src/main/java/uk/kagurach/android101/Page5.java new file mode 100644 index 0000000..f7e4b6f --- /dev/null +++ b/app/src/main/java/uk/kagurach/android101/Page5.java @@ -0,0 +1,24 @@ +package uk.kagurach.android101; + +import android.os.Bundle; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +public class Page5 extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_page5); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/uk/kagurach/android101/PageHelper.java b/app/src/main/java/uk/kagurach/android101/PageHelper.java index e00c55f..4086fde 100644 --- a/app/src/main/java/uk/kagurach/android101/PageHelper.java +++ b/app/src/main/java/uk/kagurach/android101/PageHelper.java @@ -2,6 +2,7 @@ package uk.kagurach.android101; import static androidx.core.content.ContextCompat.startActivity; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.View; @@ -11,15 +12,25 @@ public class PageHelper { private final Class _prev; private final Class _next; + private Activity _activity = null; + public final LongClickHandler longClickHandler = new LongClickHandler(); public final PageButtonHandler pageButtonHandler = new PageButtonHandler(); - PageHelper(Context curr,Class prev,Class next){ + PageHelper(Context curr, Class prev, Class next){ _curr = curr; _prev = prev; _next = next; } + + PageHelper(Context curr, Class prev, Class next,Activity activity){ + _curr = curr; + _prev = prev; + _next = next; + _activity = activity; + } + void goPrev(){ if (_prev==null){ return; @@ -36,6 +47,19 @@ public class PageHelper { startActivity(_curr,myIntent,null); } + void goNextFinish(){ + if (_activity == null){ + throw new IllegalStateException("activity is null, cannot finish the activity"); + } + + if (_next==null){ + return; + } + Intent myIntent = new Intent(_curr, _next); + startActivity(_curr,myIntent,null); + _activity.finish(); + } + private final class LongClickHandler implements View.OnLongClickListener { @Override @@ -48,7 +72,11 @@ public class PageHelper { { @Override public void onClick(View v){ - goNext(); + if (_activity == null) { + goNext(); + }else { + goNextFinish(); + } } } } diff --git a/app/src/main/res/layout/activity_page4.xml b/app/src/main/res/layout/activity_page4.xml index 6a42e96..567e301 100644 --- a/app/src/main/res/layout/activity_page4.xml +++ b/app/src/main/res/layout/activity_page4.xml @@ -7,4 +7,64 @@ android:layout_height="match_parent" tools:context=".Page4"> + + + + + + + + + + + +