gpt4 book ai didi

android - 在 SherlockFragment 中切换布局 XML

转载 作者:搜寻专家 更新时间:2023-11-01 09:08:02 24 4
gpt4 key购买 nike

我有一个带 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com