- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个带 ABS 的操作栏标签系统。第一个选项卡是登录选项卡。我将登录用户存储在本地 SQLite 数据库和 Web SQL 数据库中。当用户点击 loginButton 并且 Async loginTask 完成时,我想更改登录选项卡的 xml 布局。
所以基本上我可以运行一个测试来查看用户是否已登录,如果是则使用新的布局。 是否有任何合理的方法来完成位于 actionBar 选项卡系统中的 SherlockFragment 中的布局切换?
显然,我还需要在 onResume 内部运行相同的检查,以确保用户是否登录,显示正确的 UI。我的问题是当前在 onCreateView 中膨胀我的布局,它不会重新运行。
这是一些代码:
public class LoginFragment extends SherlockFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
userFunctions = new UserFunctions();
//test ive made that has no effect since onCreateView only runs once.
if(userFunctions.isUserLoggedIn(activity.getApplicationContext())) {
View v = inflater.inflate(R.layout.loggedin, container, false);
return v;
} else {//standard method when I didnt use the above test
View v = inflater.inflate(R.layout.loginfragment, container, false);
return v;
}
}
我有一个托管选项卡等的 Activity ,这是它的相关代码:
public static class TabsAdapter extends FragmentPagerAdapter
implements ActionBar.TabListener, ViewPager.OnPageChangeListener {
private final Context mContext;
private final ActionBar mActionBar;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
static final class TabInfo {
private final Class<?> clss;
private final Bundle args;
TabInfo(Class<?> _class, Bundle _args) {
clss = _class;
args = _args;
}
}
/*Constructor method that adds a TabsAdapter to each tab that is created.
* It also adds the ViewPager to each tab so that the user can swipe to change tabs.
*/
public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) {
super(activity.getSupportFragmentManager());
mContext = activity;
mActionBar = activity.getSupportActionBar();
mViewPager = pager;
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
}
/*A fairly simple method that sets the TabInfo for each tab so that the TabsAdapter
* knows which class the tab that is being added actually belonds to. It also updates
* the UI interface when each tab is added.
*/
public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
TabInfo info = new TabInfo(clss, args);
tab.setTag(info);
tab.setTabListener(this);
mTabs.add(info);
mActionBar.addTab(tab);
notifyDataSetChanged();
}
public int getCount() {
return mTabs.size();
}
/*A method that is used in other classes to allow each tab Fragment to
* access its inherited methods from a mother-class, in this case, SherlockFragment
*/
public SherlockFragment getItem(int position) {
TabInfo info = mTabs.get(position);
return (SherlockFragment)Fragment.instantiate(mContext, info.clss.getName(), info.args);
}
/*This method reads the user's selection for a new tab and sets that tab as
* the new current focus.*/
public void onPageSelected(int position) {
mActionBar.setSelectedNavigationItem(position);
}
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
/* This is the method that actually draws the newest tab onto the screen when
* it is selected.*/
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition());
Object tag = tab.getTag();
for (int i=0; i<mTabs.size(); i++) {
if (mTabs.get(i) == tag) {
mViewPager.setCurrentItem(i);
}
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {}
public void onTabReselected(Tab tab, FragmentTransaction ft) {}
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {}
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {}
}
最佳答案
在 fragment 布局中,您可以使用 ViewSwitcher在两个 View 之间切换,一个用于登录,另一个用于用户登录时要显示的信息。
关于android - 在 SherlockFragment 中切换布局 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10422432/
使用以下代码时出现以下错误 SherlockFragment 类型的 onKeyDown(int, KeyEvent) 方法未定义 public boolean onKeyDown(int KeyC
我正在尝试从 colors.xml 中获取颜色,使用的是 view.setBackgroundColor(getResources().getColor(R.color.bgcolor_view));
我想在我的 fragment 中启用主页按钮。这个问题之前被问过,但是为了一个 Activity 。 我试过了…… getSupportActionBar().setDisplayHomeAsUpE
我在选项卡中使用 sherlock fragment ,但我无法访问 sharedpreference 或保存它,我该怎么办?这是我的代码: public class SettingsActivit
我想将我的应用程序(扩展 Activity)更改为 Fragment(扩展 SherlockFragment) 如果我改变它我有很多错误; public class AlarmClock extend
在我的应用程序中,我有一个扩展 SherlockFragmentActivity 的类。在该 Activity 中,我正在加载四个扩展 SherlockFragment 的类,它在 Actionbar
我是 Android 新手。当启动连接到 SQLite DB 时遇到问题。基本上,它的连接打开是从 Android Activity 调用的工作。在我的场景中,我使用了 SherlockFragmen
您好,我想在 sherlockfragment 中创建一个点击监听器,但每次点击它时,它都会显示“view.class source not found”,无论我做什么操作,我想用它来启动一个 Int
遇到以下错误的问题 该类型的 getIntent() 方法未定义 使用以下扩展 SherlockFragment { 代码 public View onCreateView(LayoutInflate
我有以下内容: 1) MyActivity 扩展 SherlockFragmentActivity 2) MyMapFragment 扩展 SherlockFragment 3) 在 MyMapFra
我有扩展 SherlockFragmentActivity 的 MainActivity 和两个带有 SherlockFragment 的选项卡。这两个选项卡的 ListView 由 AsyncTas
我的主 Activity 中有两个选项卡(我使用 ActionBarSherlock)。我的 fragment 加载并解析远程 xml 以填充 ListView 。 如果我在 fragment 完全加
我有一个带 ABS 的操作栏标签系统。第一个选项卡是登录选项卡。我将登录用户存储在本地 SQLite 数据库和 Web SQL 数据库中。当用户点击 loginButton 并且 Async logi
我正在尝试制作一个 ImageView,它在图形 View 中显示,但是当我在我的设备和模拟器上运行它时,图像没有显示。这是我的 XML 代码。 这是我的 Fragment1 代码(我使用 Fra
在我的应用程序中有一个 SherlockFragmentActivity,它有 6 个 fragment 。其中一个 fragment 包含 map fragment 。 问题:现在的问题是,当我启动
我已经从这里、github 和 robolectric 博客阅读了很多链接,但还没有找到可行的解决方案(已经使用 Robolectric 2.0 alpha 2)。 更新:即使我们将 Sherlock
我真的很难在我的 Sherlock fragment 中设置 onCreateOptionsMenu 方法,因为我通常不会那么多地使用 Sherlock fragment 。有人可以告诉我必须导入什么
所以我有 3 个 Sherlock Fragments 设置并且可以与 ViewPageIndicator 一起正常工作。我现在想做的是将 TabHost 放入其中一个 Fragments 中,以便它
我有一个 SherlockFragment,它在 SherlockActivity 中膨胀时可以正常工作。我在 onCreate() 上设置了 setHasOptionsMenu(true) 并且正确
我正在尝试使用 SimpleCursorAdapter 在 Sherlock-fragment 中显示 ListView 。在模拟器上显示空布局 - 没有 ListView 。 我的SherlockF
我是一名优秀的程序员,十分优秀!