我使用ViewPager作为主布局,对于单个寻呼机视图,我使用Fragments。选项卡是操作栏的一部分。我想使用操作栏中的刷新按钮刷新当前选项卡。
我的MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
/**
* on swiping the viewpager make respective tab selected
* */
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
mAdapter.notifyDataSetChanged();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case R.id.action_refresh:
// code for the refresh
return true;
default:
this.finish();
return super.onOptionsItemSelected(menuItem);
}
//startActivity(new Intent(this,PreviousActivity.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
这是我的一个Tabs StartPage.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.startpage, container, false);
return rootView;
}
@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
一种方法是在动作栏中找到所选选项卡,将其强制转换为其类型,然后对其调用方法。
这是一种你可能想要避免的依赖。
我更喜欢在这种情况下使用广播。在片段onResume方法中注册广播接收器,在onPenna中取消注册。然后让上下文广播刷新意图,片段将这样做。
这将允许您刷新应用程序中任何地方的片段。即使刷新代码最终出现在后台运行的服务中。
更新:
你会在任何你想要的地方都有一些这样的代码(this
是上下文):
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
Intent i = new Intent(REFRESH_CONSTANT);
lbm.sendBroadcast(i);
然后,在你的片段中,你听这个广播:
public class MyFragment extends Fragment {
MyReceiver r;
public void refresh() {
// Do the refresh
}
public void onPause() {
LocalBroadcastManager.getInstance(mContext).unregisterReceiver(r);
}
public void onResume() {
r = new MyReceiver ();
LocalBroadcastManager.getInstance(mContext).registerReceiver(r,
new IntentFilter(REFRESH_CONSTANT));
}
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
MyFragment.this.refresh();
}
}
}
我正在开发一个应用程序,使用ActionBar导航,我有3个标签(我不使用tabhost)如下图: 在第一个选项卡中,将显示一个名为FragmentListItem的片段,如果单击Item1,FragmentListItem将被另一个名为FragmentItemDetails的片段替换,该片段显示所选项的详细信息。 我的问题是,当我选择Tab2或tab3,然后再次选择Tab1,我得到的不再是fra
我有一个带有FragmentStateAdapter()适配器的viewpage er2。我还有一个带有4个选项卡的选项卡布局。我为所有选项卡使用单个片段。这被命名为AllOrdersTabb。在我的架构中,我只是发送不同的值来将不同的API数据加载到AllOrdersTab片段。当选择每个选项卡布局时,创建一个片段并首次为所有4个片段正常工作。之后,如果我刷回上一个选项卡,它就不会再次创建或刷新
问题内容: 我有以下代码: MainActivity.java TabsPagerAdapter.java 我正在制作一个图书馆应用程序,其中导航是通过选项卡进行的,问题是每次我从第三个选项卡转到第一个或第一个至第三个时,选项卡的内容都在刷新,我想防止刷新,任何请帮助 ? 问题答案: 默认情况下,在滑动页面时会重新创建片段。为防止这种情况,您可以尝试以下三种方法之一: 1. 在您的片段中,呼叫。
在html中,当创建选项卡时,我可以将Paris选项卡设置为活动的(在html中用“style=”display:block;“硬编码)。因此,当页面加载时,活动选项卡(Paris)将显示。 问题 当我点击不同的标签(伦敦)并点击刷新,它再次显示巴黎。我如何才能点击刷新并显示当前活动的选项卡的信息?而不是将我带回定义的选项卡。也许javascript或jquery可以解决我的问题? 柱塞视图 示例
问题内容: 我有一个项目数据库。每个项目都按类别表中的类别ID进行分类。我正在尝试创建一个列出每个类别的页面,并在每个类别下方显示该类别中的4个最新项目。 例如: 宠物用品 宠物食品 我知道我可以通过查询数据库来轻松解决此问题,如下所示: 然后遍历该数据并查询数据库中的每个类别以获取最新的项目: 我要弄清楚的是,我是否可以仅使用1个查询并获取所有这些数据。我有33个类别,因此我认为这可能有助于减少
我试图编写一个函数,它将接收一个“浏览器实例”(我指的是),并打开一个带有特定URL的新选项卡。 这是函数: 返回True(如果URL有效) 如果有人能告诉我我做错了什么,我将非常感激。如果您有其他方法来完成打开新选项卡的任务,这是可以的。顺便说一下,我曾尝试使用:,但没有成功(我没有得到新的选项卡,也没有异常)