标签: android-fragments

片段真的需要一个空的构造函数吗?

我有一个Fragment带有多个参数的构造函数.我的应用程序在开发期间工作正常,但在生产中我的用户有时会看到此崩溃:

android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment 
make sure class name exists, is public, and has an empty constructor that is public
Run Code Online (Sandbox Code Playgroud)

我可以创建一个空的构造函数,因为这个错误消息建议,但这对我没有意义,因为那时我将不得不调用一个单独的方法来完成设置Fragment.

我很好奇为什么这种崩溃偶尔会发生.也许我使用ViewPager不正确?我Fragment自己实例化所有s并将它们保存在一个列表中Activity.我不使用FragmentManager事务,因为ViewPager我看到的例子并不需要它,并且一切似乎都在开发期间工作.

android android-fragments

252
推荐指数
3
解决办法
10万
查看次数

Activity,AppCompatActivity,FragmentActivity和ActionBarActivity:何时使用哪个?

我来自iOS,这很容易,你只需使用UIViewController.然而,在Android中,事情看起来要复杂得多,某些UIComponents用于特定的API级别.我正在阅读BigNerdRanch for Android(这本书大约有2年了),他们建议我Activity用来托管我的FragmentActivities.但是,我认为Activity已被弃用.

因此,对于API级别22(对API级别15或16的最低支持),我应该使用什么来托管组件以及组件本身?是否有所有这些用途,或者我应该几乎完全使用一两个?

android android-fragments android-activity android-actionbaractivity appcompatactivity

246
推荐指数
7
解决办法
17万
查看次数

从ViewPager中检索片段

我使用的是ViewPager连同FragmentStatePagerAdapter主办三个不同的片段:

  • [片段1]
  • [Fragment2]
  • [Fragment3]

当我想Fragment1ViewPagerFragmentActivity.

有什么问题,我该如何解决?

android android-fragments android-viewpager

240
推荐指数
8
解决办法
15万
查看次数

使用片段清除堆栈

我将我的Android应用程序移植到了蜂窝状态,然后为了使用碎片我做了一个大的重构.在我之前的版本中,当我按下Home按钮时,我曾经做过一次ACTIVITY_CLEAR_TOP以重置后台堆栈.

现在我的应用程序只是一个包含多个片段的Activity,因此当我按下Home按钮时,我只需替换其中的一个片段.如何清除,而不必使用我的背部栈startActivityACTIVITY_CLEAR_TOP标志?

android android-fragments

231
推荐指数
9
解决办法
21万
查看次数

Android DialogFragment vs Dialog

谷歌建议我们使用DialogFragment而不是简单Dialog的使用Fragments API,但使用隔离DialogFragment的简单的是 - 否确认消息框是荒谬的.在这种情况下,最佳做法是什么?

android android-fragments android-dialog android-dialogfragment

231
推荐指数
7
解决办法
13万
查看次数

从DialogFragment接收结果

我正在使用DialogFragments做很多事情:从列表中选择项目,输入文本.

将值(即字符串或列表中的项)返回给调用活动/片段的最佳方法是什么?

目前我正在制作调用活动实现DismissListener,并为DialogFragment提供对活动的引用.然后,Dialog调用OnDimissactivity中的方法,activity将从DialogFragment对象中获取结果.非常混乱,因为DialogFragment失去对活动的引用,它不能用于配置更改(方向更改).

谢谢你的帮助.

android dialog fragment dismiss android-fragments

227
推荐指数
8
解决办法
11万
查看次数

Activity和FragmentActivity之间的区别

我正在处理碎片并遇到两件事情Activity,FragmentActivity并且已经使用了好几次.我想知道这两者之间有什么区别,因为当我改变ActivityFragmentActivity,它对应用程序没有任何影响.

android android-fragments android-fragmentactivity android-support-library

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

如何使用以编程方式创建的内容视图向活动添加片段

我想将一个片段添加到以编程方式实现其布局的Activity.我查看了Fragment文档,但没有很多示例描述我需要的内容.这是我尝试编写的代码类型:

public class DebugExampleTwo extends Activity {

    private ExampleTwoFragment mFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FrameLayout frame = new FrameLayout(this);
        if (savedInstanceState == null) {
            mFragment = new ExampleTwoFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.add(frame.getId(), mFragment).commit();
        }

        setContentView(frame);
    }
}
Run Code Online (Sandbox Code Playgroud)

...

public class ExampleTwoFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, 
                             ViewGroup container, 
                             Bundle savedInstanceState) {
        Button button = new Button(getActivity());
        button.setText("Hello There");
        return button;
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码编译但在开始时崩溃,可能是因为我FragmentTransaction.add()的错误.这样做的正确方法是什么?

android android-fragments android-3.0-honeycomb

224
推荐指数
8
解决办法
42万
查看次数

以编程方式返回到Backstack中的上一个片段

假设我有一个以编程方式添加了片段的活动:

private void animateToFragment(Fragment newFragment, String tag) {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_container, newFragment, tag);
    ft.addToBackStack(null);
    ft.commit();
}
Run Code Online (Sandbox Code Playgroud)

返回到可见的上一个片段的最佳方法是什么?

在Android按钮点击时发现了Trigger后退按钮功能,但我认为模拟后退键事件不是正确的方法(我也无法让它工作):

dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
Run Code Online (Sandbox Code Playgroud)

打电话finish()只关闭我不感兴趣的活动.

有没有更好的方法来解决这个问题?

android android-fragments back-stack

203
推荐指数
8
解决办法
25万
查看次数

获取viewpager中的当前Fragment实例

下面是我的代码,3 Fragment classes每个代码都嵌入了3个选项卡中的每一个ViewPager.我有一个菜单选项.如图所示onOptionsItemSelected(),通过选择一个选项,我需要更新当前可见的片段.要更新,我必须调用片段类中的方法.有人可以建议如何调用该方法吗?

public class MainActivity  extends ActionBarActivity {

     ViewPager ViewPager;
     TabsAdapter TabsAdapter;

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

            ViewPager = new ViewPager(this);
            ViewPager.setId(R.id.pager);
            setContentView(ViewPager);

            final ActionBar bar = getSupportActionBar();

            bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

            //Attaching the Tabs to the fragment classes and setting the tab title.
            TabsAdapter = new TabsAdapter(this, ViewPager);
            TabsAdapter.addTab(bar.newTab().setText("FragmentClass1"),
                    FragmentClass1.class, null);
            TabsAdapter.addTab(bar.newTab().setText("FragmentClass2"),
              FragmentClass2.class, null);
            TabsAdapter.addTab(bar.newTab().setText("FragmentClass3"),
              FragmentClass3.class, null);


            if (savedInstanceState != null) {
                bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
            }

        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {

            switch …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

197
推荐指数
11
解决办法
20万
查看次数