相关疑难解决方法(0)

为什么片段,何时使用片段而不是活动?

在Android API 11+中,Google发布了一个名为的新类Fragment.

在视频中,谷歌建议尽可能(link1,link2),我们应该使用片段而不是活动,但他们没有解释确切原因.

片段的目的是什么?它们的一些可能的用途(除了一些可以通过简单的视图/布局轻松实现的UI示例)?

我的问题是片段:

  1. 使用片段的目的是什么?
  2. 与使用活动/视图/布局相比,使用片段有哪些优缺点?

奖金问题:

  1. 你能为片段提供一些非常有趣的用途吗?谷歌在他们的视频中没有提到的事情?
  2. 片段与包含片段的活动之间进行通信的最佳方式是什么?
  3. 使用片段时要记住哪些最重要的事情?您的经验提示和警告?

android android-layout android-fragments android-3.0-honeycomb android-activity

451
推荐指数
7
解决办法
16万
查看次数

多少活动与碎片?

介绍:

基本的"片段教程"模式是这样的:

  1. 在平板电脑上,左侧有一个列表,右侧有详细信息.
  2. 两者都存在 Fragments并且两者都存在于同一个中Activity.
  3. 在手机上,有一个列表Fragment中的一个Activity.
  4. 推出一个新Activity的细节Fragment.

(例如Dianne Hackborn的Android 3.0 Fragments APIFragments API指南)

在这两个设备上,功能都在Fragments.(简单)

平板电脑上,整个应用程序是1Activity,在手机上,有很多Activities.


问题:

  • 是否有理由将手机应用程序拆分为多个Activities

此方法的一个问题是,您复制了主平板电脑Activity和单独电话中的大量逻辑Activities.

  • 使用相同的切入和切Fragments出逻辑(仅使用不同的布局),在两种情况下保留1活动模型会不会更容易?

这种方式大部分逻辑都存在于Fragments自身中,并且只有一个Activity- 更少的代码重复.

我所读到的ActionBarSherlock也是它似乎最好用Fragments而不是Activities(但我还没有使用它).

教程是否过于简化,或者我错过了这种方法的主要内容?


我们已经在办公室成功地尝试了这两种方法 - 但我即将开始一个更大的项目,并希望尽可能让自己变得容易.

一些相关问题的链接:

android android-fragments android-listfragment

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

我何时以及为什么要在Android应用程序中使用片段?

我经常需要我的应用程序的不同部分有自己的特殊行为和UI,我不知道片段可以如何帮助.在大多数情况下,我认为创建2个不同的活动(例如,1个用于平板电脑,1个用于手机)以及分享第三类中的常见行为和事件更快.

所以,记住这一点,我为什么要使用片段?

android android-layout

105
推荐指数
4
解决办法
5万
查看次数

活动和片段之间有什么区别?

根据我的研究,背斜堆的概念及其存在方式存在显着差异:

活动

  • activity被放置到backstackactivities用户可以通过仅按下导航回先前的活动back 按钮.

  • Activity 可以独立存在.

分段

  • 当a fragment被放置到活动时,我们必须通过addToBackstack()在调用期间请求保存实例fragment transaction.

  • Fragment 必须住在里面 activity

还有其他差异吗?

android android-fragments android-activity difference

66
推荐指数
5
解决办法
7万
查看次数

用于数据加载的Android活动/片段职责

在为客户启动新应用程序时,我再次问自己应该负责加载数据的相同问题:活动或片段.我已经为各种应用程序采取了两种选择,我想知道哪种模式最适合您:

  • 限制代码复杂性.
  • 处理边缘情况(如屏幕旋转,屏幕省电,连接丢失等)

选项1 - 活动加载数据和片段仅显示它

这允许具有仅被馈送一堆对象的片段来显示.他们对加载数据以及我们如何加载数据一无所知.

另一方面,活动使用任何需要的方法加载数据(例如,最初最近的50个条目和搜索,加载搜索结果).然后它将它传递给显示它的片段.加载数据的方法可以是任何东西(来自服务,来自DB,......片段只知道POJO)

它是一种MVC架构,其中活动是控制器,片段是视图.

选项2 - 活动安排片段和片段负责获取数据

在这种模式中,片段是应用程序的自主部分.他们知道如何加载他们正在显示的数据以及如何向用户显示数据.

活动只是一种在屏幕上排列片段并协调应用程序活动之间转换的方法.

android

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

android:立即启动一个活动,然后加载内容

我已经查看了其他问题,博客和文档,似乎无法找到满足我需求的正确答案.我有两个活动,A和B.当我启动活动B(来自A)时,我希望它立即打开,然后在显示进度条时加载所有内容,而不是仅在加载内容时打开活动,使其成为可能好像它冻结了两秒钟.例如Youtube应用程序或Play商店.

这就是我得到的:

Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent goB = new intent(ActivityA.this, ActivityB.class);
            startActivity(goB);
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是我正在加载的活动:

public class ActivityB extends AppCompatActivity implements OnDateSelectedListener, OnMonthChangedListener {

    private static final DateFormat FORMATTER = SimpleDateFormat.getDateInstance();

    @Bind(R.id.calendarView) MaterialCalendarView widget;
    @Bind(R.id.textView) TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_c_calendar);
        ButterKnife.bind(this);
        widget.setOnDateChangedListener(this);
        widget.setOnMonthChangedListener(this);
        textView.setText(getSelectedDatesString());

    }

    @Override
    public void onDateSelected(@NonNull MaterialCalendarView widget, @Nullable CalendarDay date, boolean selected) {
        textView.setText(getSelectedDatesString());
    }

    private String getSelectedDatesString() {
        CalendarDay date = widget.getSelectedDate();
        if (date …
Run Code Online (Sandbox Code Playgroud)

java android android-activity

18
推荐指数
4
解决办法
8859
查看次数

Android的Instagram如何构建?

我正在构建一个Android应用程序,尽管它具有完全不同的功能,但它具有与Instagram非常相似的UI.有一个带有按钮的底栏,用于查看时间线,发布(我的应用内容),检查通知以及查看您自己的个人资料.

我是四年级电气工程专业的学生,​​但我对Android开发相对较新.为了更快地教自己更多的东西,我继续使用他们自己的底栏(它们只是按钮作为我的应用程序(如查看帖子,个人资料,时间轴,朋友等)他们自己的活动的很多功能.现在).在这样做的过程中,我学到了很多关于开发的知识,并构建了一个应用程序,就我迄今为止所构建的应用程序而言,它可以按照预期运行,但不是太快或太漂亮.我意识到这可能不是最佳实践,我想问你所有你认为如何实现类似Instagram的UI的简单解释?当我说Instagram时我主要是指:它包括一个底栏; 应用程序"保留"用户所在的位置,就像我正在从时间线查看朋友,然后按视图配置文件按钮,再按时间线,然后我仍然会查看我的朋友.

我试图尽可能多地阅读以解决重新设计问题,但我仍然对做这样的事情的标准有点模糊.我应该尝试TabHost(已弃用)吗?每个按钮应该代表一个具有可交换视图的活动(例如在IG中我点击我的时间轴上的帖子并且它交换到图片后视图)?我应该将活动与每个按钮相关联,并根据用户导航的位置交换片段吗?我意识到这是一个开放式问题,我希望它对Stack Overflow来说不是太模糊,但我已经考虑过很多了,我很感激一些更有经验的开发人员的反馈!谢谢!

android instagram

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

通过底部导航切换 Activity/Fragment

我创建了一个带有底部导航栏的活动。我用谷歌搜索了很多关于它的东西,但现在我不知道如何准确处理这个问题。之前,当用户单击底部导航时,我刚刚开始另一个活动,但我认为这不好。

如何在选项卡之间切换?我必须使用片段吗?那么“setContentView(intlayoutResID)”呢?我怎样才能做到这一点?我很困惑...

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                return true;
            case R.id.navigation_dashboard:
                startActivity(dashboardActivity);
                return true;
            case R.id.navigation_notifications:
                startActivity(dashboardActivity);
                return true;
        }
        return false;
    }

};
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助 - 我希望您明白我的意思。

android android-fragments android-activity

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

我应该用片段替换Android活动吗?

我有一个大型的Android游戏,其中每个逻辑屏幕都有一个Activity.(启动画面,开始画面,关卡选择器,游戏画面和设置是不同的活动).现在一切都很好.

如果我重写所有内容以便只有一个活动且逻辑屏幕是碎片,它会减少RAM或CPU消耗吗?

performance android android-fragments android-activity

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

创建Activity是否比创建片段更快?

我有一个布局Fragment的创建过程中,显示有关产品,但遗憾的是资料,fragment一点滞后(毛刺)约50毫秒(这是我猜的滞后如何记录是这是一个很大的刷新率(Android版) 16毫秒),但是当我Activity 直接使用相同的布局并应用相同的逻辑时,它看起来和感觉都很平滑。

这种情况有什么特殊原因吗?有什么方法可以使片段在创建过程中看起来像活动一样平滑吗?

您可以测试一些复杂的布局,然后尝试将其作为片段的视图充气,并与活动的布局内容相同。

这是我的oncreate在片段和活动中的样子:

@Override
public void onCreate ( Bundle savedInstanceState ) {  // or equivalent  override for fragment.
    super.onCreate ( savedInstanceState );
    setContentView ( R.layout.fragment_product_profile );
    initLayout ();
    loadData ();
    initCustomMadeImageSlider ();
    autoScrollViewPager ();
}
Run Code Online (Sandbox Code Playgroud)

这是关于UI的一般想法

android android-layout android-fragments layout-inflater android-activity

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