相关疑难解决方法(0)

ViewPager 在返回时跳过视图留空

我正在制作一个具有 4 个主要视图的应用程序。我希望所有这些都保留在顶部的 LIST 菜单上(现在可以了)。

使用 Fragments,我可以在不实际转到其他活动的情况下更改视图,但是由于我的一个视图有一个 ViewPager,它根本无法工作(当我第一次加载视图时,内容还可以,但是在第二个时间,ViewPager 上的视图消失,只有当我离开 2 个索引位置并返回时才会出现)(见图片,显示第一次加载时间,然后第二次)

在此处输入图片说明

请注意,ViewPager 不是要显示菜单项,它实际上是当前菜单项的 Fragment 的一部分(在这种情况下,“Simula'c~ao”)

我的问题是:这是一个已知问题,是否有简单的方法可以解决,或者我必须以其他方式解决?我已经在互联网上搜索过这个问题,但对我没有任何作用(无效,设置getItemPosition返回POSITION_NONE......)

我查看了 ViewPager 类,似乎一切正常,我对其进行了修改,以便每次渲染视图时,它都会强制渲染所有内容,但这种方式都不起作用。

我试图将可见性设置为 GONE 和 VISIBLE

我试图分离和连接适配器

试图缓存视图,并返回缓存。

似乎奏效的一件事:改变手机的方向。那奏效了。

尝试了很多我什至记得的事情......我对此有点生气,因为过去的24小时根本没有帮助我解决这个“谜团”。我希望你们中的一些人可以 =]

我的代码:https : //www.dropbox.com/s/u4mlxr3k6ta9yrm/MainActivity.java https://www.dropbox.com/s/2dqfnzjs2wl89hj/SimulationFragment.java

浏览次数:https : //www.dropbox.com/s/d6ruc1zjovqu6ob/activity_main.xml https://www.dropbox.com/s/lp1iea13klr77iq/activity_simulation.xml https://www.dropbox.com/s/1mkl3jqmo7g4wh8/ item_simulation.xml

java user-interface android view android-viewpager

4
推荐指数
1
解决办法
2312
查看次数

为什么我的片段的getActivity返回null?

我目前在我的主要活动中有一个帖子下载东西frow web,然后我需要在下载完成后更新ViewPager中的Fragments.

下载由服务处理,并在完成后广播Intent.

所以,基本上,我的主Activity中的代码是:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ((PositionFragment)mPagerAdapter.getItem(0)).updateUI();
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的PositionFragment:

public void updateUI() {
    mActivity = getActivity();
Run Code Online (Sandbox Code Playgroud)

我真的不明白这是怎么回事.这听起来很简单,但我必须遗漏一些东西!

任何的想法?

编辑:我的适配器:

public class PageAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragments;

    public PageAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {
        return this.fragments.get(position);
    }

    @Override
    public int getCount() {
        return this.fragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}
Run Code Online (Sandbox Code Playgroud)

null android android-activity

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

无法从片段对象访问公共方法

我在这里使用Streets Of Boston的答案保存了片段对象

并拉出一个片段

 Fragment fragment = myPagerAdapter.getRegisteredFragments(nowPosition);
 if (fragment == null)
 {
     return; 
 }
Run Code Online (Sandbox Code Playgroud)

但我无法从片段对象片段访问公共方法.


这个方法是一个片段

 public void dowork()
 {
     //WORK!
 }

 public static void dowork2()
 {
     //WORK!
 }
Run Code Online (Sandbox Code Playgroud)

fragment.dowork(); - >找不到dowork
fragment.dowork2(); - >找不到dowork2

怎么访问?
谢谢.

java android fragment android-fragments

3
推荐指数
1
解决办法
937
查看次数

当使用holoeverywhere滑块插件时,如何从活动中获取当前可见的片段?

我想知道如何在holoeverywhere中执行这些操作:

将滑块插件与tabber结合使用时,可以参考活动中当前可见且活动的片段.

从活动/其他片段中获取对TabsTabsSwipeFragment的引用,并动态禁用/启用滑动.

android android-holo-everywhere

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

从fragmentActivity刷新片段UI

我想从FragmentActivity中更改片段中的ImageView(在代码中创建).(XML中没有片段和标记).

从FragmentActivity扩展的MainActivity和从GooglePlayServicesClient.ConnectionCallbacks实现的:

...
FragmentAdapter mAdapter;
ViewPager mPager;
...

public void onCreate(Bundle savedInstanceState){
    ...
    FragmentManager fm = getSupportFragmentManager();
    mAdapter = new FragmentAdapter(fm);
    mPager.setAdapter(mAdapter);
    ...}

@Override
public void onConnected(Bundle connectionHint){
//*** I want to change a ImageView on Fragment1 here
}
Run Code Online (Sandbox Code Playgroud)

从FragmentPagerAdapter扩展的FragmentAdapter:

...
private FragmentManager mFragmentManager;

public FragmentAdapter(FragmentManager fm){
    super(fm);
}

@Override
public Fragment getItem(int pos){
// String name = makeFragmentName(R.id.mainPager, pos);
// Fragment fragmentObject = mFragmentManager.findFragmentByTag(name);
Fragment fragmentObject = null;

switch(pos){
    case 0:
        fragmentObject = new Fragment1();
        break;
    ...
}

return …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentpageradapter android-fragmentactivity

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

片段ViewPager NullPointer问题

我有一些片段被交换进我的主要活动.初始片段称为BrowseHomeFragment并且最初加载正常,但是当我用新片段替换它然后将其替换回来时我得到以下错误

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
    at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:686)
    at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:215)
    at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:536)
Run Code Online (Sandbox Code Playgroud)

BrowseHomeFragment的onCreateView方法:

public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
        InjectionGraph.inject(this);

        View view = inflater.inflate(R.layout.fragment_browse, container, false);
        ButterKnife.inject(this, view);

        addTabsToPagerSlidingTabStrip(inflater);

        viewPager.setAdapter(new BrowseHomePagerAdapter(getChildFragmentManager()));

        pagerSlidingTabStrip.setViewPager(viewPager);
        // has to set page change listener in indicator
        pagerSlidingTabStrip.setOnPageChangeListener(pageChangeListener);

        viewPager.setCurrentItem(initialTabIndex);

        return view;
    }
Run Code Online (Sandbox Code Playgroud)

BrowseHomePagerAdapter

public class BrowseHomePagerAdapter extends FragmentStatePagerAdapter {
    private int lastPosition = -1;

    @Inject
    BrowseHomepageMetricRecorder browseHomepageMetricRecorder;

    @Inject
    NetworkMonitor networkMonitor;


    /**
     * …
Run Code Online (Sandbox Code Playgroud)

android android-fragments fragmentmanager

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

getActivity()在ActionBar Fragment中返回null

getActivity()null如果之前被调用,片段内将返回fragment.onAttach(activity).

fragment.onActivityCreated(savedInstanceState)被称为fragment.onAttach(activity).有关片段生命周期的信息,请参阅developer.android.

我的片段中有一个尝试实例化数据库连接的方法.最初调用该方法时,它可以正常工作.

public void onActivityCreated(Bundle savedInstanceState){
   super.onActivityCreated(savedInstanceState);
    Log.d("MyTag", "Activity being created");
    if (savedInstanceState == null){
        listAdapter.setContext(getActivity());
        execSearch(0);
    } else { listAdapter.setContext(getActivity()); }
}

public void execSearch(Long searchId) {
    MySQLiteHelper dbHelper = new MySQLiteHelper(getActivity());
    SQLiteDatabase database = dbHelper.getReadableDatabase();
    ... 
}
Run Code Online (Sandbox Code Playgroud)

现在,当在列表视图中单击按钮后通过接口调用此相同方法时,getActivity()返回null(在片段中).

以下是ListAdapter中的按钮回调:

private final View.OnClickListener editSearchListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Long search_id = (Long) v.getTag();
        ((MyInterface) context).searchCalled(search_id);
    }
};
Run Code Online (Sandbox Code Playgroud)

以及MainActivity中的接口实现:

@Override …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception fragmentpageradapter

0
推荐指数
1
解决办法
1682
查看次数