simplify fragment management

This commit is contained in:
Andrew Dolgov 2012-06-19 19:51:47 +04:00
parent d6e2b869e9
commit bd937be784
2 changed files with 24 additions and 229 deletions

View File

@ -24,25 +24,7 @@
</LinearLayout>
<FrameLayout
android:id="@+id/feeds_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/cats_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/headlines_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/article_fragment"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>

View File

@ -420,17 +420,6 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
return m_unreadOnly;
}
/*
* private void setUnreadArticlesOnly(boolean unread) { m_unreadArticlesOnly
* = unread;
*
* HeadlinesFragment frag =
* (HeadlinesFragment)getSupportFragmentManager().findFragmentById
* (R.id.headlines_fragment);
*
* if (frag != null) frag.refresh(false); }
*/
@Override
public boolean getUnreadArticlesOnly() {
return m_unreadArticlesOnly;
@ -502,12 +491,12 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
Log.d(TAG, "m_compatMode=" + m_compatMode);
if (!m_compatMode) {
if (android.os.Build.VERSION.SDK_INT < 14 || android.os.Build.VERSION.SDK_INT == 15) {
if (!m_smallScreenMode) {
//if (android.os.Build.VERSION.SDK_INT < 14 || android.os.Build.VERSION.SDK_INT == 15) {
//if (!m_smallScreenMode) {
LayoutTransition transitioner = new LayoutTransition();
((ViewGroup) findViewById(R.id.main)).setLayoutTransition(transitioner);
}
}
((ViewGroup) findViewById(R.id.fragment_container)).setLayoutTransition(transitioner);
//}
//}
m_headlinesActionModeCallback = new HeadlinesActionModeCallback();
}
@ -518,51 +507,6 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
startActivity(offline);
finish();
} else {
if (m_smallScreenMode) {
if (m_selectedArticle != null) {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
findViewById(R.id.headlines_fragment).setVisibility(
View.GONE);
} else if (m_activeFeed != null) {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.article_fragment)
.setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
} else {
findViewById(R.id.headlines_fragment).setVisibility(View.GONE);
findViewById(R.id.article_fragment).setVisibility(View.GONE);
if (m_enableCats && m_activeCategory == null) {
findViewById(R.id.feeds_fragment).setVisibility(
View.GONE);
findViewById(R.id.cats_fragment).setVisibility(
View.VISIBLE);
} else {
findViewById(R.id.cats_fragment).setVisibility(
View.GONE);
//findViewById(R.id.feeds_fragment).setVisibility(
// View.VISIBLE);
}
}
} else {
if (m_selectedArticle == null) {
findViewById(R.id.article_fragment)
.setVisibility(View.GONE);
if (!m_enableCats || m_activeCategory != null)
findViewById(R.id.cats_fragment).setVisibility(
View.GONE);
else
findViewById(R.id.feeds_fragment).setVisibility(
View.GONE);
} else {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
}
}
//AppRater.showRateDialog(this, null);
AppRater.appLaunched(this);
@ -572,7 +516,6 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
login();
}
}
}
private void initDatabase() {
@ -766,18 +709,11 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
}
private void closeCategory() {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.VISIBLE);
m_activeCategory = null;
FeedCategoriesFragment cf = (FeedCategoriesFragment) getSupportFragmentManager()
.findFragmentByTag(FRAG_CATS);
if (cf != null) {
cf.setSelectedCategory(null);
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, new FeedCategoriesFragment(), FRAG_CATS);
ft.commit();
initMainMenu();
refreshCategories();
@ -802,48 +738,14 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
if (m_selectedArticle != null) {
closeArticle();
} else if (m_activeFeed != null) {
//if (m_compatMode) {
findViewById(R.id.main).setAnimation(
AnimationUtils.loadAnimation(this,
R.anim.slide_right));
//}
if (m_activeFeed.is_cat) {
findViewById(R.id.headlines_fragment).setVisibility(
View.GONE);
findViewById(R.id.cats_fragment)
.setVisibility(View.VISIBLE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.headlines_fragment, new HeadlinesFragment(m_activeFeed), FRAG_HEADLINES);
ft.replace(R.id.fragment_container, new FeedCategoriesFragment(), FRAG_CATS);
ft.commit();
FeedCategoriesFragment cf = (FeedCategoriesFragment) getSupportFragmentManager()
.findFragmentByTag(FRAG_CATS);
if (cf != null) {
cf.setSelectedCategory(null);
}
refreshCategories();
} else {
findViewById(R.id.headlines_fragment).setVisibility(
View.GONE);
findViewById(R.id.feeds_fragment).setVisibility(
View.VISIBLE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.headlines_fragment, new HeadlinesFragment(m_activeFeed), FRAG_HEADLINES);
ft.replace(R.id.fragment_container, new FeedsFragment(m_activeCategory), FRAG_FEEDS);
ft.commit();
refreshFeeds();
}
FeedsFragment ff = (FeedsFragment) getSupportFragmentManager()
.findFragmentByTag(FRAG_FEEDS);
if (ff != null) {
ff.setSelectedFeed(null);
}
m_activeFeed = null;
@ -851,14 +753,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
initMainMenu();
} else if (m_activeCategory != null) {
//if (m_compatMode) {
findViewById(R.id.main).setAnimation(
AnimationUtils.loadAnimation(this,
R.anim.slide_right));
//}
closeCategory();
} else if (allowQuit) {
finish();
}
@ -868,23 +763,10 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
} else if (m_activeCategory != null) {
closeCategory();
} else if (m_activeFeed != null) {
findViewById(R.id.headlines_fragment).setVisibility(
View.INVISIBLE);
FeedsFragment ff = (FeedsFragment) getSupportFragmentManager()
.findFragmentByTag(FRAG_FEEDS);
if (ff != null) {
ff.setSelectedFeed(null);
}
m_activeFeed = null;
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.headlines_fragment, new HeadlinesFragment(m_activeFeed), FRAG_HEADLINES);
ft.replace(R.id.fragment_container, new FeedsFragment(m_activeCategory), FRAG_FEEDS);
ft.commit();
refreshFeeds();
initMainMenu();
} else if (allowQuit) {
@ -1265,44 +1147,14 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
}
private void closeArticle() {
if (m_smallScreenMode) {
findViewById(R.id.main).setAnimation(
AnimationUtils.loadAnimation(this, R.anim.slide_right));
}
// boolean browseCats = m_prefs.getBoolean("browse_cats_like_feeds",
// false);
if (m_smallScreenMode) {
findViewById(R.id.article_fragment).setVisibility(View.GONE);
findViewById(R.id.headlines_fragment).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.article_fragment).setVisibility(View.GONE);
if (m_activeFeed != null) {
if (m_activeFeed.is_cat) {
findViewById(R.id.cats_fragment)
.setVisibility(View.VISIBLE);
} else {
findViewById(R.id.feeds_fragment).setVisibility(
View.VISIBLE);
}
}
}
m_selectedArticle = null;
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.article_fragment, new DummyFragment(), FRAG_ARTICLE);
ft.remove(getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE));
ft.show(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES));
ft.commit();
initMainMenu();
if (!m_enableCats || m_activeCategory != null)
refreshFeeds();
else
refreshCategories();
}
@Override
@ -1529,14 +1381,10 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
if (m_enableCats) {
FeedCategoriesFragment frag = new FeedCategoriesFragment();
ft.replace(R.id.cats_fragment, frag, FRAG_CATS);
findViewById(R.id.cats_fragment).setVisibility(View.VISIBLE);
ft.replace(R.id.fragment_container, frag, FRAG_CATS);
} else {
FeedsFragment frag = new FeedsFragment();
ft.replace(R.id.feeds_fragment, frag, FRAG_FEEDS);
findViewById(R.id.feeds_fragment).setVisibility(View.VISIBLE);
ft.replace(R.id.fragment_container, frag, FRAG_FEEDS);
}
try {
@ -1619,13 +1467,6 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
initMainMenu();
if (m_smallScreenMode) {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.headlines_fragment).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.headlines_fragment).setVisibility(View.VISIBLE);
}
if (!append) {
if (m_menu != null) {
@ -1641,7 +1482,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES);
ft.replace(R.id.fragment_container, hf, FRAG_HEADLINES);
ft.commit();
} else {
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager()
@ -1657,23 +1498,17 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
Log.d(TAG, "viewCategory");
if (!openAsFeed) {
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
findViewById(R.id.feeds_fragment).setVisibility(View.VISIBLE);
m_activeCategory = cat;
FeedsFragment frag = new FeedsFragment(cat);
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.replace(R.id.feeds_fragment, frag, FRAG_FEEDS);
ft.replace(R.id.fragment_container, frag, FRAG_FEEDS);
ft.commit();
} else {
if (m_smallScreenMode)
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
findViewById(R.id.headlines_fragment).setVisibility(View.VISIBLE);
m_activeFeed = new Feed(cat.id, cat.title, true);
if (m_menu != null) {
@ -1689,7 +1524,7 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.replace(R.id.headlines_fragment, frag, FRAG_HEADLINES);
ft.replace(R.id.fragment_container, frag, FRAG_HEADLINES);
ft.commit();
}
@ -1714,15 +1549,6 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
hf.setActiveArticleId(article.id);
}
if (m_smallScreenMode) {
findViewById(R.id.headlines_fragment).setVisibility(View.GONE);
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
}
Fragment frag;
if (m_smallScreenMode || m_prefs.getBoolean("tablet_article_swipe", false)) {
@ -1732,17 +1558,9 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE);
ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES));
ft.add(R.id.fragment_container, frag, FRAG_ARTICLE);
ft.commit();
if (m_smallScreenMode) {
if (compatAnimation == 0)
findViewById(R.id.main).setAnimation(
AnimationUtils.loadAnimation(this, R.anim.slide_left));
else
findViewById(R.id.main).setAnimation(
AnimationUtils.loadAnimation(this, compatAnimation));
}
}
private Feed getActiveFeed() {
@ -1776,11 +1594,6 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
findViewById(R.id.loading_progress).setVisibility(View.GONE);
findViewById(R.id.feeds_fragment).setVisibility(View.GONE);
findViewById(R.id.cats_fragment).setVisibility(View.GONE);
findViewById(R.id.headlines_fragment).setVisibility(View.GONE);
findViewById(R.id.article_fragment).setVisibility(View.GONE);
initMainMenu();
}