我有带有查看寻呼机功能的ActionBar选项卡.我的问题是在这些标签中,我无法替换碎片.我使用下面的代码替换片段,但它没有替换,主要片段仍然存在.此外,在其他标签中也存在第二个片段.我的TabListener也低于片段的替换.
private void addFragment(Fragment fragment, boolean addToBackStack, int transition)
{
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.details_container, fragment);
fragmentTransaction.setTransition(transition);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
public static class TabsAdapter extends FragmentPagerAdapter
implements ViewPager.OnPageChangeListener, ActionBar.TabListener {
private final Context mContext;
private final ActionBar mBar;
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;
}
}
public TabsAdapter(FragmentActivity activity, ActionBar bar, …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager android-actionbar
对于viewpager的例子,在这里,包含线路:
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
Run Code Online (Sandbox Code Playgroud)
我不明白R.id.pager是如何定义的.我应该在某个地方用xml创建一个viewpager吗?但这没有意义,因为它在前一行中实例化了一个viewpager.如果有人能为我清除这一点,我将非常感激!
谢谢!!
编辑
显然将线路更改为:
mViewPager.setId(1);
Run Code Online (Sandbox Code Playgroud)
使它工作:) :)
我在FragmentPagerAdapter中有大约20个片段,它们包含一个列表,它从中拾取片段,因此不会重新创建片段.
private List<TitledFragment> fragments;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
this.fragments = new ArrayList<TitledFragment>();
}
@Override
public Fragment getItem(int i) {
return fragments.get(i).getFragment();
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragments.get(position).getTitle();
}
public synchronized List<TitledFragment> getFragments() {
return fragments;
}
public synchronized void addFragment(TitledFragment fragment) {
fragments.add(fragment);
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
FragmentPagerAdapter被设置为ViewPager的适配器,之后我重新排序片段(洗牌仅用于测试)
Collections.shuffle(mSectionsPagerAdapter.getFragments());
mSectionsPagerAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
由于某种原因,只有标题的顺序被改变,即使它为getItem返回不同的片段,因为顺序是不同的.为什么这样,我怎么能绕过它呢?
java android android-fragments android-viewpager fragmentpageradapter
我正在尝试通过单击按钮来更改 viewpager 片段。我有 2 个片段(FragmentA、FragementB),每个片段都有它自己的 xml 文件(fragment_a.xml、fragment_b.xml 等等)。我在 FragmentA 中调用 ImageView 对象,当我按下那个 imageView 对象时,我想加载 FragmentB。请帮我做。
请在下面找到我使用的代码。
..\swipetabs\src\com\example\swipetabs\MainActivity.java
package com.example.swipetabs;
import com.tabs.*;
import android.os.Bundle;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.widget.ImageView;
public class MainActivity extends FragmentActivity implements TabListener {
ActionBar action_bar;
ViewPager viewPager;
ImageView creditCards;
Fragment fragement;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager=(ViewPager)findViewById(R.id.pager);
viewPager.setAdapter(new MyAdoptor(getSupportFragmentManager()));
action_bar=getActionBar();
//action_bar.setBackgroundDrawable(d)
action_bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab1=action_bar.newTab();
tab1.setText("Login"); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个有一些标签的应用程序,就像这样
每个选项卡都是片段,每个片段显示文章,类别和一些其他信息的列表视图.我想要做的是当我从列表视图中点击片段中的项目时,打开一个包含完整文章或更多信息的新片段.我已经读过这与嵌套片段有关,我必须使用该方法getChildFragmentManager().我使用ViewPager在选项卡中显示我的片段,这是我的主要活动:
public class MainActivity extends FragmentActivity{
private String tabs[]={"Tab1, Tab2,.<other Fragments>..,VideosFragment"};
ViewPager viewPager=null;
FragmentManager fragmentManager=getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft=fragmentManager.beginTransaction();
AdapterView adapterView;
public static final int TIME_ENTRY_REQUEST_CODE=1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager=(ViewPager)findViewById(R.id.pager);
viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
public void onPageSelected(int position){
getActionBar().setSelectedNavigationItem(position);
}
});
viewPager.setAdapter(new AdapterView(fragmentManager));
viewPager.setOffscreenPageLimit(tabs.length);
adapterView=new AdapterView(getSupportFragmentManager());
/*initialization of the action bar: color, icon & title.*/
final android.app.ActionBar actionbar=getActionBar();
ColorDrawable color=new ColorDrawable(Color.parseColor("#cd853f"));
actionbar.setBackgroundDrawable(color);
actionbar.setTitle("Title");
ActionBar.TabListener tabListener=new ActionBar.TabListener() {
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) { …Run Code Online (Sandbox Code Playgroud) 我正在使用可折叠的动作栏.尝试启动新活动时遇到错误:无法解析构造函数'Intent(匿名android.support.design.widget.NavigationView.OnNavigationItemSelectedListener,java.lang.Class)'
请帮帮我:
我们可以使用导航抽屉菜单项单击启动新活动吗?
要么
我们只能选择在菜单项单击时替换并显示导航抽屉中的片段
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.containerView,new SentFragment()).commit();
Run Code Online (Sandbox Code Playgroud)
如果是,那么如何替换tab活动和viewpager并设置操作栏高度?
activity_main.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.test.app.activities.MainActivity">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="4dp"
app:tabGravity="fill"
app:tabMode="scrollable"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginRight="@dimen/fab_margin_right"
android:src="@drawable/ic_plus"
app:borderWidth="0dp"
app:fabSize="normal" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:itemIconTint="@color/nav_item_icon_tint_color"
app:itemTextColor="@color/nav_item_text_color"
app:menu="@menu/navigation_drawer_items" />
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
navigation = (NavigationView) …Run Code Online (Sandbox Code Playgroud)