From b17bfe7f74127fbce0452e8bc5f38066c27f5397 Mon Sep 17 00:00:00 2001 From: Chang Min Park Date: Thu, 30 Aug 2018 15:30:51 -0400 Subject: [PATCH] fix fragment crashes --- .../.idea/caches/build_file_checksums.ser | Bin 539 -> 539 bytes v_regular/Mocket/app/build.gradle | 3 +- .../rms/mocket/activities/MainActivity.java | 164 +++++++++++++----- .../rms/mocket/fragments/GraphFragment.java | 8 +- .../rms/mocket/fragments/MemoryFragment.java | 15 +- .../rms/mocket/fragments/MoreFragment.java | 4 +- .../rms/mocket/fragments/QuizFragment.java | 3 + 7 files changed, 143 insertions(+), 54 deletions(-) diff --git a/v_regular/Mocket/.idea/caches/build_file_checksums.ser b/v_regular/Mocket/.idea/caches/build_file_checksums.ser index e0018769a3797c843368ae886a6b7183dd11e480..4a3abd17831e086ec067d3744462179181f351c7 100644 GIT binary patch delta 33 rcmV++0N($b1e*kqm;{TOdG)cJZUGTVZ-$7zS^TNa(7DjU62L8Z2Fehv delta 33 rcmV++0N($b1e*kqm;`>YR>`rPZUGSu_n56GtW=F7`zN#GQf-xZ^b!v$ diff --git a/v_regular/Mocket/app/build.gradle b/v_regular/Mocket/app/build.gradle index f3e8fc1..155bb26 100644 --- a/v_regular/Mocket/app/build.gradle +++ b/v_regular/Mocket/app/build.gradle @@ -42,7 +42,8 @@ dependencies { implementation 'com.google.firebase:firebase-database:16.0.1' implementation 'com.google.firebase:firebase-auth:16.0.3' implementation 'com.google.android.gms:play-services-auth:15.0.1' -// implementation 'com.google.firebase:firebase-admin:6.3.0' + implementation 'com.google.firebase:firebase-core:16.0.1' + // implementation 'com.google.firebase:firebase-admin:6.3.0' testImplementation 'junit:junit:4.12' diff --git a/v_regular/Mocket/app/src/main/java/com/rms/mocket/activities/MainActivity.java b/v_regular/Mocket/app/src/main/java/com/rms/mocket/activities/MainActivity.java index e680d48..aebb332 100644 --- a/v_regular/Mocket/app/src/main/java/com/rms/mocket/activities/MainActivity.java +++ b/v_regular/Mocket/app/src/main/java/com/rms/mocket/activities/MainActivity.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; @@ -23,6 +24,7 @@ import com.google.firebase.database.ValueEventListener; import com.rms.mocket.R; import com.rms.mocket.common.AlarmReceiver; +import com.rms.mocket.common.Utils; import com.rms.mocket.fragments.GraphFragment; import com.rms.mocket.fragments.MemoryFragment; import com.rms.mocket.fragments.MoreFragment; @@ -35,10 +37,20 @@ public class MainActivity extends AppCompatActivity { private static final String ID_KEY = "android_id"; - String previous_fragment = "memory"; + final String MEMORY_FRAGMENT_TAG = "memory"; + final String QUIZ_FRAGMENT_TAG = "quiz"; + final String GRAPH_FRAGMENT_TAG = "graph"; + final String MORE_FRAGMENT_TAG = "more"; + String previous_fragment = MEMORY_FRAGMENT_TAG; + Fragment memory_fragment; + Fragment quiz_fragment; + Fragment graph_fragment; + Fragment more_fragment; + FragmentTransaction fragment_transaction; + FragmentManager fragment_manager; @Override protected void onCreate(Bundle savedInstanceState) { @@ -48,18 +60,35 @@ protected void onCreate(Bundle savedInstanceState) { this.setSupportActionBar(myToolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); - Fragment selectedFragment = new MemoryFragment(); - getSupportFragmentManager().beginTransaction().replace(R.id.MAIN_frameLayout_content, - selectedFragment).commit(); + memory_fragment = new MemoryFragment(); + quiz_fragment = new QuizFragment(); + graph_fragment = new GraphFragment(); + more_fragment = new MoreFragment(); + memory_fragment.onCreate(savedInstanceState); + quiz_fragment.onCreate(savedInstanceState); + graph_fragment.onCreate(savedInstanceState); + more_fragment.onCreate(savedInstanceState); + + fragment_transaction = getSupportFragmentManager().beginTransaction(); + fragment_manager = getSupportFragmentManager(); + + this.setFragments(); this.syncLocalDatabaseWithServerDatabase(); startAlarm(this); } + public void setFragments(){ + fragment_manager.beginTransaction().add(R.id.MAIN_frameLayout_content, + memory_fragment,MEMORY_FRAGMENT_TAG).commit(); + fragment_transaction.addToBackStack(MEMORY_FRAGMENT_TAG); + } + /* OnClick: when a category is clicked. */ - public void categoryClicked(View v) { ImageView imageView_memory = (ImageView) findViewById(R.id.MAIN_imageView_memory); + public void categoryClicked(View v) { + ImageView imageView_memory = (ImageView) findViewById(R.id.MAIN_imageView_memory); ImageView imageView_quiz = (ImageView) findViewById(R.id.MAIN_imageView_quiz); ImageView imageView_graph = (ImageView) findViewById(R.id.MAIN_imageView_graph); ImageView imageView_more = (ImageView) findViewById(R.id.MAIN_imageView_more); @@ -91,9 +120,6 @@ protected void onCreate(Bundle savedInstanceState) { v.setBackgroundResource(R.drawable.bottom_border); - Fragment selectedFragment = null; - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - switch (v.getId()) { @@ -101,18 +127,30 @@ protected void onCreate(Bundle savedInstanceState) { Glide.with(this) // Activity or Fragment .load(R.drawable.clicked_memory_icon) .into(imageView_memory); -// imageView_memory.setImageResource(R.drawable.clicked_memory_icon); - selectedFragment = new MemoryFragment(); + + if(previous_fragment.equals(MEMORY_FRAGMENT_TAG)) return; switch (previous_fragment) { - case "memory": + case MEMORY_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MEMORY_FRAGMENT_TAG)).commit(); + break; + case QUIZ_FRAGMENT_TAG: + Utils.log(fragment_manager.getFragments().toString()); + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(QUIZ_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); + break; + case GRAPH_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(GRAPH_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); break; - default: - transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); + case MORE_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MORE_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); break; + } - previous_fragment = "memory"; + previous_fragment = MEMORY_FRAGMENT_TAG; break; @@ -121,24 +159,28 @@ protected void onCreate(Bundle savedInstanceState) { Glide.with(this) // Activity or Fragment .load(R.drawable.clicked_quiz_icon) .into(imageView_quiz); -// imageView_quiz.setImageResource(R.drawable.clicked_quiz_icon); - selectedFragment = new QuizFragment(); + + if(previous_fragment.equals(QUIZ_FRAGMENT_TAG)) return; switch (previous_fragment) { - case "memory": - transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); + case MEMORY_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MEMORY_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); break; - case "quiz": + case QUIZ_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(QUIZ_FRAGMENT_TAG)).commit(); break; - case "graph": - transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); + case GRAPH_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(GRAPH_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); break; - case "more": - transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); + case MORE_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MORE_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); break; } - previous_fragment = "quiz"; + previous_fragment = QUIZ_FRAGMENT_TAG; break; @@ -146,51 +188,91 @@ protected void onCreate(Bundle savedInstanceState) { Glide.with(this) // Activity or Fragment .load(R.drawable.clicked_graph_icon) .into(imageView_graph); -// imageView_graph.setImageResource(R.drawable.clicked_graph_icon); - selectedFragment = new GraphFragment(); + if(previous_fragment.equals(GRAPH_FRAGMENT_TAG)) return; switch (previous_fragment) { - case "memory": - transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); + case MEMORY_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MEMORY_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); break; - case "quiz": - transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); + case QUIZ_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(QUIZ_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); break; - case "graph": + case GRAPH_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(GRAPH_FRAGMENT_TAG)).commit(); break; - case "more": - transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); + case MORE_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MORE_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); break; } - previous_fragment = "graph"; + previous_fragment = GRAPH_FRAGMENT_TAG; break; case R.id.MAIN_relativeLayout_more: + Glide.with(this) // Activity or Fragment .load(R.drawable.clicked_more_icon) .into(imageView_more); -// imageView_more.setImageResource(R.drawable.clicked_more_icon); - selectedFragment = new MoreFragment(); + if(previous_fragment.equals(MORE_FRAGMENT_TAG)) return; switch (previous_fragment) { - case "more": + case MEMORY_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MEMORY_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); + break; + case QUIZ_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(QUIZ_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); break; - default: - transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); + case GRAPH_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(GRAPH_FRAGMENT_TAG)).commit(); + fragment_manager.beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left); + break; + case MORE_FRAGMENT_TAG: + fragment_manager.beginTransaction().hide(fragment_manager.findFragmentByTag(MORE_FRAGMENT_TAG)).commit(); break; } - previous_fragment = "more"; + previous_fragment = MORE_FRAGMENT_TAG; break; } - transaction.replace(R.id.MAIN_frameLayout_content, selectedFragment).commit(); + Fragment fragment = fragment_manager.findFragmentByTag(previous_fragment); + if(fragment == null){ + switch(previous_fragment){ + case MEMORY_FRAGMENT_TAG: + fragment_manager.beginTransaction().add(R.id.MAIN_frameLayout_content, + memory_fragment,previous_fragment).commit(); + fragment_manager.beginTransaction().addToBackStack(MEMORY_FRAGMENT_TAG); + break; + case QUIZ_FRAGMENT_TAG: + fragment_manager.beginTransaction().add(R.id.MAIN_frameLayout_content, + quiz_fragment,previous_fragment).commit(); + fragment_manager.beginTransaction().addToBackStack(QUIZ_FRAGMENT_TAG); + break; + case GRAPH_FRAGMENT_TAG: + fragment_manager.beginTransaction().add(R.id.MAIN_frameLayout_content, + graph_fragment,previous_fragment).commit(); + fragment_manager.beginTransaction().addToBackStack(GRAPH_FRAGMENT_TAG); + break; + case MORE_FRAGMENT_TAG: + fragment_manager.beginTransaction().add(R.id.MAIN_frameLayout_content, + more_fragment,previous_fragment).commit(); + fragment_manager.beginTransaction().addToBackStack(MORE_FRAGMENT_TAG); + break; + } + + }else{ + fragment_manager.beginTransaction().show(fragment).commit(); + } } diff --git a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/GraphFragment.java b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/GraphFragment.java index 4cad188..ac5f9f0 100644 --- a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/GraphFragment.java +++ b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/GraphFragment.java @@ -114,7 +114,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c /* Display total term count in database. */ - mTermDatabase.child(user_id).addListenerForSingleValueEvent(new ValueEventListener() { + mTermDatabase.child(user_id).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { @@ -131,6 +131,8 @@ public void onCancelled(@NonNull DatabaseError databaseError) { this.setTimeButtonListener(); this.setExpandButtonListener(); this.setSearchViewListener(); + this.setGraph(TYPE_WEEK); + Utils.log("Graph.onCreate()"); return rootView; } @@ -160,7 +162,7 @@ public void onResume() { button_year.setPaintFlags(0); button_week.setPaintFlags(button_week.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); - this.setGraph(TYPE_WEEK); + Utils.log("Graph.onResume()"); } @@ -239,7 +241,7 @@ public String getFormattedValue(float value, AxisBase axis) { /* Update Term data */ - mTermDatabase.child(user_id).addListenerForSingleValueEvent(new ValueEventListener() { + mTermDatabase.child(user_id).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { if (FirebaseAuth.getInstance().getCurrentUser() == null) return; diff --git a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MemoryFragment.java b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MemoryFragment.java index 0bc4042..50312e0 100644 --- a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MemoryFragment.java +++ b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MemoryFragment.java @@ -97,7 +97,8 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c this.setSpeakButtonListener(); this.setSearchViewListener(); - + this.updateTermList(); + Utils.log("Memory.onCreate()"); return rootView; } @@ -292,7 +293,7 @@ public void onClick(View view) { FirebaseHandlerTerm.addTerm(term, definition); - updateTermList(); +// updateTermList(); clearTexts(); } @@ -357,7 +358,7 @@ public void clearTexts(){ public void updateTermList(){ - mTermDatabase.child(user_id).addListenerForSingleValueEvent(new ValueEventListener() { + mTermDatabase.child(user_id).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { @@ -508,7 +509,7 @@ public void onClick(View view) { dialog.dismiss(); - updateTermList(); +// updateTermList(); VibratorUtils.vibrateAlert(rootView.getContext()); Toast.makeText(getContext(), "Saved.", Toast.LENGTH_LONG).show(); @@ -534,7 +535,7 @@ public void onClick(View view) { KeyboardUtils.hideKeyboard(getActivity()); dialog.dismiss(); - updateTermList(); +// updateTermList(); VibratorUtils.vibrateAlert(rootView.getContext()); Toast.makeText(getContext(), "Deleted.", Toast.LENGTH_LONG).show(); } @@ -625,8 +626,7 @@ public void onResume() { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } - - this.updateTermList(); + Utils.log("Memory.onResume()"); } @@ -637,5 +637,6 @@ public void onPause(){ tts.shutdown(); } super.onPause(); + Utils.log("Memory.onPause()"); } } diff --git a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MoreFragment.java b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MoreFragment.java index a90f980..c510818 100644 --- a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MoreFragment.java +++ b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/MoreFragment.java @@ -82,7 +82,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c this.setSaveButtonListener(); this.initialSetting(); - + Utils.log("More.onCreate()"); return rootView; } @@ -104,7 +104,7 @@ public void onResume() { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } - + Utils.log("More.onResume()"); } diff --git a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/QuizFragment.java b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/QuizFragment.java index 338319b..632ee59 100644 --- a/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/QuizFragment.java +++ b/v_regular/Mocket/app/src/main/java/com/rms/mocket/fragments/QuizFragment.java @@ -17,6 +17,7 @@ import com.rms.mocket.activities.GameActivity; import com.rms.mocket.activities.LoginActivity; import com.rms.mocket.activities.QuizActivity; +import com.rms.mocket.common.Utils; public class QuizFragment extends Fragment { @@ -51,6 +52,7 @@ public void onClick(View view) { } }); + Utils.log("Quiz.onCreate()"); return rootView; } @@ -72,6 +74,7 @@ public void onResume() { intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } + Utils.log("Quiz.onResume()"); } /**