相关疑难解决方法(0)

在ActionBar选项卡中使用ViewPager替换片段

我有带有查看寻呼机功能的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

5
推荐指数
1
解决办法
5225
查看次数

R.id.pager?这定义在哪里?

对于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)

使它工作:) :)

android android-layout

2
推荐指数
1
解决办法
3641
查看次数

Android在FragmentPagerAdapter中更改片段顺序

我在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

2
推荐指数
1
解决办法
4518
查看次数

通过 ImageView 单击更改 viewpager 片段

我正在尝试通过单击按钮来更改 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)

android android-fragments

2
推荐指数
1
解决办法
3678
查看次数

使用Android中的ViewPager将子片段添加到父片段

我正在开发一个有一些标签的应用程序,就像这样 使用vviewPager的应用程序

每个选项卡都是片段,每个片段显示文章,类别和一些其他信息的列表视图.我想要做的是当我从列表视图中点击片段中的项目时,打开一个包含完整文章或更多信息的新片段.我已经读过这与嵌套片段有关,我必须使用该方法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)

android fragment android-fragments

2
推荐指数
1
解决办法
5570
查看次数

如何在单击的材料导航抽屉菜单项上启动活动

我正在使用可折叠的动作栏.尝试启动新活动时遇到错误:无法解析构造函数'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)

android material-design

2
推荐指数
1
解决办法
1万
查看次数