Skip to content
This repository was archived by the owner on Nov 8, 2018. It is now read-only.

Commit c6e5c27

Browse files
authored
Merge pull request #378 from harshitagupta30/Issue#367-Multiple-instances-of-fragment
Issue #367 Multiple instances of fragment when clicked from navigation drawer resolved.
2 parents 91908ba + aa0ac52 commit c6e5c27

File tree

1 file changed

+137
-127
lines changed

1 file changed

+137
-127
lines changed

app/src/main/java/com/peacecorps/pcsa/MainActivity.java

+137-127
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public class MainActivity extends AppCompatActivity {
6262
private FragmentManager fragmentManager = getSupportFragmentManager();
6363
SharedPreferences sharedPreferences;
6464
private int lastExpandedGroup=-1;
65+
private int lastChildExpandedGroup = -1;
6566

6667
@Override
6768
protected void onCreate(Bundle savedInstanceState) {
@@ -98,26 +99,34 @@ protected void onCreate(Bundle savedInstanceState) {
9899
expListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
99100
@Override
100101
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
101-
switch (groupPosition) {
102-
case 0:
103-
//Swapping ContactPostStaff into the fragment container dynamically
104-
Fragment contactPostStaffFragment = new ContactPostStaff();
105-
MainActivity.swapFragmentIn(MainActivity.this,contactPostStaffFragment,ContactPostStaff.TAG,true);
102+
if (lastExpandedGroup == groupPosition) {
103+
if (lastExpandedGroup == 2 || lastExpandedGroup == 3 || lastExpandedGroup == 4 || lastExpandedGroup == 5) {
104+
//do nothing
105+
} else {
106106
mDrawer.closeDrawer(GravityCompat.START);
107-
break;
108-
case 1:
109-
//Swapping CircleOfTrustFragment into the container
110-
CircleOfTrustFragment circleOfTrustFragment = new CircleOfTrustFragment();
111-
MainActivity.swapFragmentIn(MainActivity.this,circleOfTrustFragment,CircleOfTrustFragment.TAG,true);
112-
mDrawer.closeDrawer(GravityCompat.START);
113-
break;
114-
case 6:
115-
Intent intent = new Intent(MainActivity.this, UserSettingsActivity.class);
116-
startActivity(intent);
117-
mDrawer.closeDrawer(GravityCompat.START);
118-
break;
119-
case 7:
120-
Toast.makeText(MainActivity.this,getString(R.string.change_name),Toast.LENGTH_LONG).show();
107+
}
108+
} else {
109+
switch (groupPosition) {
110+
case 0:
111+
//Swapping ContactPostStaff into the fragment container dynamically
112+
Fragment contactPostStaffFragment = new ContactPostStaff();
113+
MainActivity.swapFragmentIn(MainActivity.this, contactPostStaffFragment, ContactPostStaff.TAG, true);
114+
mDrawer.closeDrawer(GravityCompat.START);
115+
break;
116+
case 1:
117+
//Swapping CircleOfTrustFragment into the container
118+
CircleOfTrustFragment circleOfTrustFragment = new CircleOfTrustFragment();
119+
MainActivity.swapFragmentIn(MainActivity.this, circleOfTrustFragment, CircleOfTrustFragment.TAG, true);
120+
mDrawer.closeDrawer(GravityCompat.START);
121+
break;
122+
case 6:
123+
Intent intent = new Intent(MainActivity.this, UserSettingsActivity.class);
124+
startActivity(intent);
125+
mDrawer.closeDrawer(GravityCompat.START);
126+
break;
127+
case 7:
128+
Toast.makeText(MainActivity.this, getString(R.string.change_name), Toast.LENGTH_LONG).show();
129+
}
121130
}
122131
return false;
123132
}
@@ -135,116 +144,117 @@ public void onGroupExpand(int groupPosition) {
135144
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
136145
@Override
137146
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
147+
if (lastExpandedGroup == groupPosition && lastChildExpandedGroup == childPosition) {
148+
mDrawer.closeDrawer(GravityCompat.START);
149+
} else {
150+
switch (groupPosition) {
151+
case 2:
152+
switch (childPosition) {
153+
case 0:
154+
//Swapping RadarFragment into the container
155+
RadarFragment radarFragment = new RadarFragment();
156+
MainActivity.swapFragmentIn(MainActivity.this, radarFragment, RadarFragment.TAG, true);
157+
break;
158+
case 1:
159+
//Swapping UnwantedAttentionStrategies into the container
160+
CopingFragment copingFragment = new CopingFragment();
161+
MainActivity.swapFragmentIn(MainActivity.this, copingFragment, CopingFragment.TAG, true);
162+
break;
163+
case 2:
164+
//Swapping TacticsFragment into the container
165+
TacticsFragment tacticsFragment = new TacticsFragment();
166+
MainActivity.swapFragmentIn(MainActivity.this, tacticsFragment, TacticsFragment.TAG, true);
167+
break;
168+
case 3:
169+
//Swapping Bystander Fragment into the container
170+
BystanderInterventionFragment bystanderInterventionFragment = new BystanderInterventionFragment();
171+
MainActivity.swapFragmentIn(MainActivity.this, bystanderInterventionFragment, BystanderInterventionFragment.TAG, true);
172+
break;
173+
case 4:
174+
//Swapping Safety Plan Basics Fragment into the container
175+
SafetyPlanBasicsFragment safetyPlanBasicsFragment = new SafetyPlanBasicsFragment();
176+
MainActivity.swapFragmentIn(MainActivity.this, safetyPlanBasicsFragment, SafetyPlanBasicsFragment.TAG, true);
177+
break;
178+
case 5:
179+
//Swapping Safety Plan Fragment into the container
180+
Intent intent = new Intent(MainActivity.this, SafetyPlanActivity.class);
181+
startActivity(intent);
182+
break;
138183

139-
switch (groupPosition)
140-
{
141-
case 2:
142-
switch (childPosition)
143-
{
144-
case 0:
145-
//Swapping RadarFragment into the container
146-
RadarFragment radarFragment = new RadarFragment();
147-
MainActivity.swapFragmentIn(MainActivity.this,radarFragment,RadarFragment.TAG,true);
148-
break;
149-
case 1:
150-
//Swapping UnwantedAttentionStrategies into the container
151-
CopingFragment copingFragment = new CopingFragment();
152-
MainActivity.swapFragmentIn(MainActivity.this,copingFragment,CopingFragment.TAG,true);
153-
break;
154-
case 2:
155-
//Swapping TacticsFragment into the container
156-
TacticsFragment tacticsFragment = new TacticsFragment();
157-
MainActivity.swapFragmentIn(MainActivity.this,tacticsFragment, TacticsFragment.TAG,true);
158-
break;
159-
case 3:
160-
//Swapping Bystander Fragment into the container
161-
BystanderInterventionFragment bystanderInterventionFragment = new BystanderInterventionFragment();
162-
MainActivity.swapFragmentIn(MainActivity.this,bystanderInterventionFragment, BystanderInterventionFragment.TAG,true);
163-
break;
164-
case 4:
165-
//Swapping Safety Plan Basics Fragment into the container
166-
SafetyPlanBasicsFragment safetyPlanBasicsFragment = new SafetyPlanBasicsFragment();
167-
MainActivity.swapFragmentIn(MainActivity.this,safetyPlanBasicsFragment, SafetyPlanBasicsFragment.TAG,true);
168-
break;
169-
case 5:
170-
//Swapping Safety Plan Fragment into the container
171-
Intent intent = new Intent(MainActivity.this,SafetyPlanActivity.class);
172-
startActivity(intent);
173-
break;
174-
175-
}
176-
break;
177-
case 3:
178-
switch (childPosition)
179-
{
180-
case 0:
181-
SingleTextViewFragment.showSingleTextLayout(MainActivity.this,getString(R.string.benefits),getString(R.string.benefits_subtitle),getString(R.string.benefits_info)); break;
182-
case 1:
183-
AvailableFragment availableFragment = new AvailableFragment();
184-
MainActivity.swapFragmentIn(MainActivity.this,availableFragment,AvailableFragment.TAG,true);
185-
break;
186-
case 2:
187-
SingleTextViewFragment.showSingleTextLayout(MainActivity.this,getString(R.string.commitment),getString(R.string.commitment_subtitle),getString(R.string.commitment_info));
188-
break;
189-
case 3:
190-
//Swapping AfterAssaultFragment into the container
191-
AfterAssaultFragment afterAssaultFragment = new AfterAssaultFragment();
192-
MainActivity.swapFragmentIn(MainActivity.this,afterAssaultFragment,AfterAssaultFragment.TAG,true);
193-
break;
194-
case 4:
195-
//Swapping ConfidentialityFragment into the container
196-
ConfidentialityFragment confidentialityFragment = new ConfidentialityFragment();
197-
MainActivity.swapFragmentIn(MainActivity.this,confidentialityFragment,ConfidentialityFragment.TAG,true);
198-
break;
199-
case 5:
200-
//Swapping MythbustersFragment into the container
201-
MythbustersFragment mythbustersFragment = new MythbustersFragment();
202-
MainActivity.swapFragmentIn(MainActivity.this,mythbustersFragment,MythbustersFragment.TAG,true);
203-
break;
204-
}
205-
break;
206-
case 4:
207-
switch (childPosition)
208-
{
209-
case 0:
210-
Fragment wasFragment = new WasFragment();
211-
MainActivity.swapFragmentIn(MainActivity.this,wasFragment,WasFragment.TAG,true);
212-
break;
213-
case 1:
214-
Fragment commonFragment = new CommonFragment();
215-
MainActivity.swapFragmentIn(MainActivity.this,commonFragment,CommonFragment.TAG,true);
216-
break;
217-
case 2:
218-
SingleTextViewFragment.showSingleTextLayout(MainActivity.this,getString(R.string.impact),
219-
getString(R.string.impact_subtitle),getString(R.string.impact_sexual_assault)); break;
220-
case 3:
221-
Fragment harassmentFragment = new HarassmentFragment();
222-
MainActivity.swapFragmentIn(MainActivity.this,harassmentFragment,HarassmentFragment.TAG,true);
223-
break;
224-
case 4:
225-
Fragment helpingButton = new HelpingFragment();
226-
MainActivity.swapFragmentIn(MainActivity.this,helpingButton,HelpingFragment.TAG,true);
227-
break;
228-
}
229-
break;
230-
case 5:
231-
switch (childPosition)
232-
{
233-
case 0:
234-
SingleTextViewFragment.showSingleTextLayout(MainActivity.this,getString(R.string.policies_title),getString(R.string.subtitle_policies)
235-
,getString(R.string.policies_all));
236-
break;
237-
case 1:
238-
GlossaryFragment glossaryFragment = new GlossaryFragment();
239-
MainActivity.swapFragmentIn(MainActivity.this,glossaryFragment,GlossaryFragment.TAG,true);
240-
break;
241-
case 2:
242-
FurtherResourcesFragment furtherResourcesFragment = new FurtherResourcesFragment();
243-
MainActivity.swapFragmentIn(MainActivity.this,furtherResourcesFragment,FurtherResourcesFragment.TAG,true);
244-
break;
245-
}
246-
break;
184+
}
185+
break;
186+
case 3:
187+
switch (childPosition) {
188+
case 0:
189+
SingleTextViewFragment.showSingleTextLayout(MainActivity.this, getString(R.string.benefits), getString(R.string.benefits_subtitle), getString(R.string.benefits_info));
190+
break;
191+
case 1:
192+
AvailableFragment availableFragment = new AvailableFragment();
193+
MainActivity.swapFragmentIn(MainActivity.this, availableFragment, AvailableFragment.TAG, true);
194+
break;
195+
case 2:
196+
SingleTextViewFragment.showSingleTextLayout(MainActivity.this, getString(R.string.commitment), getString(R.string.commitment_subtitle), getString(R.string.commitment_info));
197+
break;
198+
case 3:
199+
//Swapping AfterAssaultFragment into the container
200+
AfterAssaultFragment afterAssaultFragment = new AfterAssaultFragment();
201+
MainActivity.swapFragmentIn(MainActivity.this, afterAssaultFragment, AfterAssaultFragment.TAG, true);
202+
break;
203+
case 4:
204+
//Swapping ConfidentialityFragment into the container
205+
ConfidentialityFragment confidentialityFragment = new ConfidentialityFragment();
206+
MainActivity.swapFragmentIn(MainActivity.this, confidentialityFragment, ConfidentialityFragment.TAG, true);
207+
break;
208+
case 5:
209+
//Swapping MythbustersFragment into the container
210+
MythbustersFragment mythbustersFragment = new MythbustersFragment();
211+
MainActivity.swapFragmentIn(MainActivity.this, mythbustersFragment, MythbustersFragment.TAG, true);
212+
break;
213+
}
214+
break;
215+
case 4:
216+
switch (childPosition) {
217+
case 0:
218+
Fragment wasFragment = new WasFragment();
219+
MainActivity.swapFragmentIn(MainActivity.this, wasFragment, WasFragment.TAG, true);
220+
break;
221+
case 1:
222+
Fragment commonFragment = new CommonFragment();
223+
MainActivity.swapFragmentIn(MainActivity.this, commonFragment, CommonFragment.TAG, true);
224+
break;
225+
case 2:
226+
SingleTextViewFragment.showSingleTextLayout(MainActivity.this, getString(R.string.impact),
227+
getString(R.string.impact_subtitle), getString(R.string.impact_sexual_assault));
228+
break;
229+
case 3:
230+
Fragment harassmentFragment = new HarassmentFragment();
231+
MainActivity.swapFragmentIn(MainActivity.this, harassmentFragment, HarassmentFragment.TAG, true);
232+
break;
233+
case 4:
234+
Fragment helpingButton = new HelpingFragment();
235+
MainActivity.swapFragmentIn(MainActivity.this, helpingButton, HelpingFragment.TAG, true);
236+
break;
237+
}
238+
break;
239+
case 5:
240+
switch (childPosition) {
241+
case 0:
242+
SingleTextViewFragment.showSingleTextLayout(MainActivity.this, getString(R.string.policies_title), getString(R.string.subtitle_policies)
243+
, getString(R.string.policies_all));
244+
break;
245+
case 1:
246+
GlossaryFragment glossaryFragment = new GlossaryFragment();
247+
MainActivity.swapFragmentIn(MainActivity.this, glossaryFragment, GlossaryFragment.TAG, true);
248+
break;
249+
case 2:
250+
FurtherResourcesFragment furtherResourcesFragment = new FurtherResourcesFragment();
251+
MainActivity.swapFragmentIn(MainActivity.this, furtherResourcesFragment, FurtherResourcesFragment.TAG, true);
252+
break;
253+
}
254+
break;
255+
}
247256
}
257+
lastChildExpandedGroup = childPosition;
248258
mDrawer.closeDrawer(GravityCompat.START);
249259
return true;
250260
}

0 commit comments

Comments
 (0)