From 72670bc65be14b4d9cee2f165cf25007daeea162 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Wed, 30 Aug 2023 20:48:27 +0100 Subject: [PATCH] Failed adding of auto-generated fragment based activity --- app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 23 ++++-- .../openseizuredetector/MainActivity2.java | 45 ++++++++++++ .../ui/main/PageViewModel.java | 26 +++++++ .../ui/main/PlaceholderFragment.java | 70 +++++++++++++++++++ .../ui/main/SectionsPagerAdapter.java | 46 ++++++++++++ app/src/main/res/layout/activity_main.xml | 44 ++++++++++++ app/src/main/res/layout/fragment_main.xml | 23 ++++++ app/src/main/res/values-land/dimens.xml | 3 + app/src/main/res/values-w1240dp/dimens.xml | 3 + app/src/main/res/values-w600dp/dimens.xml | 3 + app/src/main/res/values/dimens.xml | 2 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/themes.xml | 11 +++ 14 files changed, 299 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/uk/org/openseizuredetector/MainActivity2.java create mode 100644 app/src/main/java/uk/org/openseizuredetector/ui/main/PageViewModel.java create mode 100644 app/src/main/java/uk/org/openseizuredetector/ui/main/PlaceholderFragment.java create mode 100644 app/src/main/java/uk/org/openseizuredetector/ui/main/SectionsPagerAdapter.java create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/fragment_main.xml create mode 100644 app/src/main/res/values-land/dimens.xml create mode 100644 app/src/main/res/values-w1240dp/dimens.xml create mode 100644 app/src/main/res/values-w600dp/dimens.xml create mode 100644 app/src/main/res/values/themes.xml diff --git a/app/build.gradle b/app/build.gradle index 092ad46..3639493 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,6 +66,8 @@ dependencies { implementation 'com.google.firebase:firebase-firestore' implementation 'androidx.navigation:navigation-fragment:2.5.2' implementation 'androidx.navigation:navigation-ui:2.5.2' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' testImplementation 'junit:junit:4.13.2' testImplementation "androidx.test:core" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6d178ee..719a76a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,7 +3,6 @@ xmlns:tools="http://schemas.android.com/tools" android:versionCode="128" android:versionName="4.2.1b"> - @@ -22,10 +21,13 @@ - - - + + + + + + + + + mIndex = new MutableLiveData<>(); + private LiveData mText = Transformations.map(mIndex, new Function() { + @Override + public String apply(Integer input) { + return "Hello world from section: " + input; + } + }); + + public void setIndex(int index) { + mIndex.setValue(index); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/uk/org/openseizuredetector/ui/main/PlaceholderFragment.java b/app/src/main/java/uk/org/openseizuredetector/ui/main/PlaceholderFragment.java new file mode 100644 index 0000000..02b1f51 --- /dev/null +++ b/app/src/main/java/uk/org/openseizuredetector/ui/main/PlaceholderFragment.java @@ -0,0 +1,70 @@ +package uk.org.openseizuredetector.ui.main; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import uk.org.openseizuredetector.R; +import uk.org.openseizuredetector.databinding.FragmentMainBinding; + +/** + * A placeholder fragment containing a simple view. + */ +public class PlaceholderFragment extends Fragment { + + private static final String ARG_SECTION_NUMBER = "section_number"; + + private PageViewModel pageViewModel; + private FragmentMainBinding binding; + + public static PlaceholderFragment newInstance(int index) { + PlaceholderFragment fragment = new PlaceholderFragment(); + Bundle bundle = new Bundle(); + bundle.putInt(ARG_SECTION_NUMBER, index); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + pageViewModel = new ViewModelProvider(this).get(PageViewModel.class); + int index = 1; + if (getArguments() != null) { + index = getArguments().getInt(ARG_SECTION_NUMBER); + } + pageViewModel.setIndex(index); + } + + @Override + public View onCreateView( + @NonNull LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + + binding = FragmentMainBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + final TextView textView = binding.sectionLabel; + pageViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/uk/org/openseizuredetector/ui/main/SectionsPagerAdapter.java b/app/src/main/java/uk/org/openseizuredetector/ui/main/SectionsPagerAdapter.java new file mode 100644 index 0000000..36b782d --- /dev/null +++ b/app/src/main/java/uk/org/openseizuredetector/ui/main/SectionsPagerAdapter.java @@ -0,0 +1,46 @@ +package uk.org.openseizuredetector.ui.main; + +import android.content.Context; + +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; + +import uk.org.openseizuredetector.R; + +/** + * A [FragmentPagerAdapter] that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ +public class SectionsPagerAdapter extends FragmentPagerAdapter { + + @StringRes + private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2}; + private final Context mContext; + + public SectionsPagerAdapter(Context context, FragmentManager fm) { + super(fm); + mContext = context; + } + + @Override + public Fragment getItem(int position) { + // getItem is called to instantiate the fragment for the given page. + // Return a PlaceholderFragment. + return PlaceholderFragment.newInstance(position + 1); + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + return mContext.getResources().getString(TAB_TITLES[position]); + } + + @Override + public int getCount() { + // Show 2 total pages. + return 2; + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..c6a81a6 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml new file mode 100644 index 0000000..0a90c04 --- /dev/null +++ b/app/src/main/res/layout/fragment_main.xml @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml new file mode 100644 index 0000000..22d7f00 --- /dev/null +++ b/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/app/src/main/res/values-w1240dp/dimens.xml b/app/src/main/res/values-w1240dp/dimens.xml new file mode 100644 index 0000000..d73f4a3 --- /dev/null +++ b/app/src/main/res/values-w1240dp/dimens.xml @@ -0,0 +1,3 @@ + + 200dp + \ No newline at end of file diff --git a/app/src/main/res/values-w600dp/dimens.xml b/app/src/main/res/values-w600dp/dimens.xml new file mode 100644 index 0000000..22d7f00 --- /dev/null +++ b/app/src/main/res/values-w600dp/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index edf0e6d..b9898d5 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,5 +3,7 @@ 16dp 16dp 16dp + 16dp + 8dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32ea311..013bea7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -555,4 +555,7 @@ libero vel nunc consequat, quis tincidunt nisl eleifend. Cras bibendum enim a justo luctus vestibulum. Fusce dictum libero quis erat maximus, vitae volutpat diam dignissim. + MainActivity2 + Tab 1 + Tab 2 diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..d907dd5 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,11 @@ + + + + +