当前位置: 首页 > 知识库问答 >
问题:

片段正在显示但未与活动连接

安泰平
2023-03-14

嗨,我正在一个应用程序中工作,其中:

  1. 活动中有查看寻呼机

问题:

问题是,当我从frag3返回到frag1时,有时frag1没有附加到活动。

我不知道这是怎么发生的。

如果发生这种情况,那么解决方案是什么,以便我可以停止活动以分离frag1或再次重新初始化frag1。

请帮忙。

共有1个答案

陆博易
2023-03-14

此代码可能会帮助您

public class PageAdapter extends FragmentPagerAdapter  implements IconPagerAdapter {
    protected static final int[] PAGER = new int[] {
            R.drawable.image1,
            R.drawable.image2,
            R.drawable.image3,
            R.drawable.image4
    };

    private int mCount = PAGER.length;

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

    @Override
    public Fragment getItem(int position) {
        return new PagerFragment(PAGER[position]);
    }

    @Override
    public int getIconResId(int index) {
        return ICONS[index % PAGER.length];
    }

    @Override
    public int getCount() {
        return mCount;
    }

    public void setCount(int count) {
        if (count > 0 && count <= 10) {
            mCount = count;
            notifyDataSetChanged();
        }
    }
}

定义片段

public final class PagerFragment extends Fragment {
    private static final String KEY_CONTENT = "PagerFragment:Content";
    int imageSource;

    public PagerFragment(int imageSource) {
        this.imageSource = imageSource;

    }

    public PagerFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
            imageSource = savedInstanceState.getInt(KEY_CONTENT);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.indicatorpage, null);
        ImageView image = (ImageView) root.findViewById(R.id.pagerImage);
        image.setImageResource(imageSource);
        setRetainInstance(true);
        return root;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt(KEY_CONTENT, imageSource);
    }
}

主活动类

public class MainActivity extends FragmentActivity {
    PagerFragmentAdapter mAdapter;
    ViewPager mPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mAdapter = new PagerFragmentAdapter(getSupportFragmentManager());
        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);
        mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                System.out.println("selected page is :" + position);

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        CirclePageIndicator mIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);

        final float density = getResources().getDisplayMetrics().density;
        mIndicator.setRadius(7 * density);
        mIndicator.setPageColor(0x00000000);
        mIndicator.setFillColor(0xFFFFFFFF);
        mIndicator.setStrokeColor(0xFFFFFFFF);
        mIndicator.setStrokeWidth(1 * density);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
 类似资料:
  • 我试图从活动中隐藏/显示片段中的按钮,但它给了我以下异常。 android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸其视图。 家庭活动 类别片段 代码太大,无法在此处发布。这就是为什么我只在发现问题的地方发布代码。 我能够获得新设计按钮实例。令我震惊的是,如果尝试玩按钮实例(可见/消失),它会给我上述异

  • 我在处理活动和碎片时遇到了一些麻烦。我正处于应用程序开发的早期阶段,最终希望设计一种最有效的方法来整合两个独立的屏幕。 每种方法的好处是什么?你会选择哪种设计?

  • 问题内容: 我试图使用此代码从我的主要活动中调用第二个活动 作为我的OrderSummaryActivity: 但是布局不会在此活动中显示,只是空白页。这是布局的xml: 有什么提示吗? 问题答案: 尝试将 OrderSummaryActivity.class 更改为:

  • 我试图在片段中填充一个具有自定义布局的listView。但是,当我启动应用程序时,listview的内容没有加载(这是使用数组适配器获得的)。下面是加载listView的代码: 这里是我的CustomAdapter的代码: } 这是列表项布局的xml: 这里是主要布局: 我没有收到任何错误消息,但是当我启动应用程序时,listView中没有显示任何项目,并且永远不会调用我的适配器的getView方

  • 问题内容: 我已经开发了一个小应用程序来跟踪我的日常工作活动,该工具包含两个类: 执行者 UIProgress 我的目标是创建一个ProgressBar来更新执行状态,使用的逻辑如下所示, 根据Executor类中定义的executeTask(),我创建了UIProgress对象。 UIProgress类扩展了JFrame。创建一个面板,其中包含带有一个图像的标签和进度条。我已经在此类中定义了一个

  • 我开发了一个小应用程序来跟踪我的日常工作活动,该工具包含两个类: 遗嘱执行人 我的目标是创建一个更新执行状态的ProgressBar,下面给出了使用的逻辑, 从Exector类中定义的执行任务()中,我创建了UIProgress对象。 UIProgress类扩展了JFrame。创建一个包含带有一个图像和进度条的标签的面板。我在这个类中定义了一个方法updateProgress,它设置了进度条的值。