小编Emi*_*Adz的帖子

困境:何时使用碎片与活动:

我知道它Activities的目的是代表我的应用程序的单个屏幕,同时Fragments设计为可重用的UI布局,其中嵌入了逻辑.

直到不久前,我开发了一个应用程序,因为它说应该开发它们.我创建了一个Activity代表我的应用程序的屏幕并使用Fragments for ViewPagerGoogle Maps.我很少创建ListFragment可以多次重用的UI或其他UI.

最近我偶然发现一个项目只包含2 Activities个是一个SettingsActivity而另一个是MainActivity.它的布局中MainActivity填充了许多隐藏的全屏UI片段,只显示了一个.在Activity逻辑FragmentTransitions中,应用程序的不同屏幕之间存在许多.

我喜欢这种方法的原因是因为应用程序使用了一个ActionBar,它保持原样并且不会随着屏幕切换动画一起移动,这就是Activity切换时发生的情况.这为这些屏幕转换提供了更流畅的感觉.

所以我想我要问的是分享你关于这个主题的当前开发方式,我知道它看起来可能看起来像一个基于意见的问题,但我把它视为一个Android设计和架构问题...不是真的基于意见的一个.

更新(01.05.2014):继来自SquareEric Burke的演示之后(我不得不说这是一个很棒的演示文稿,为Android开发人员提供了许多有用的工具.而且我与Square没有任何关系)

http://www.infoq.com/presentations/Android-Design/

根据我过去几个月的个人经验,我发现构建应用程序的最佳方法是创建一组片段,这些片段代表应用程序中的并将所有这些片段集中在一个片段中Activity.所以基本上你Activities的应用程序的数量与流量的数量相同.这样,操作栏在所有流程的屏幕上保持完整,但正在重新创建流程,这很有意义.正如埃里克伯克所说,并且我也已经意识到,尽可能少Activities地使用的哲学并不适用于所有情况,因为它在他所谓的"上帝"活动中造成混乱.

architecture android android-fragments android-activity

761
推荐指数
11
解决办法
19万
查看次数

setEnabled()vs setClickable(),有什么区别?

到现在为止,当我想阻止用户按下按钮时,我会设置 button.setClickable(false);并通常将文本更改为某种灰色(让用户知道按钮被禁用).今天我偶然发现了这家setEnabled()酒店.

所以我去了文档,看看方法的解释如下:

setEnabled(boolean enabled)
   Set the enabled state of this view.
Run Code Online (Sandbox Code Playgroud)

这甚至意味着什么?启用状态/可点击状态和禁用状态/不可点击状态之间有什么区别?有人可以解释一下我以前做过什么,使用可点击的属性和使用setEnabled()属性之间的区别是什么?什么时候应该用?我搜索了StackOverflow但找不到任何相关内容.提前致谢.

android clickable android-button

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

iOS错误"嵌入式二进制文件未使用与父应用程序相同的证书进行签名"

这是我在IOS应用程序开发中的第一步,我遇到了一些我无法弄清楚的问题.

error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.

    Embedded Binary Signing Certificate:    Not Code Signed
    Parent App Signing Certificate:         iPhone Developer: Emil Adz (9QNEF95395)
Run Code Online (Sandbox Code Playgroud)

我无法理解,什么是嵌入式二进制签名证书

我在这里回答了同样的错误,但没有一个与这里提出的问题有关(Not Code Signed).

我试图从Apple开发者会员中心撤销我的证书并申请另一个证书,但问题仍然存在.

有人知道如何解决这个问题吗?

xcode certificate provisioning-profile swift xcode6

31
推荐指数
9
解决办法
4万
查看次数

如何禁用ViewPager从一个方向滑动

我想允许用户ViewPager仅从右向左滑动.因此,一旦他通过一个页面,他就无法回到它.如何才能做到这一点?

我试过这个解决方案:

public class CustomViewPager extends ViewPager {

float lastX = 0;

boolean lockScroll = false;

public CustomViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomViewPager(Context context) {
    super(context);
}

@Override
public boolean onTouchEvent(MotionEvent ev) {

    switch (ev.getAction()) {
    case MotionEvent.ACTION_DOWN:
        lastX = ev.getX();
        lockScroll = false;
        return super.onTouchEvent(ev);
    case MotionEvent.ACTION_MOVE:

        if (lastX > ev.getX()) {
            lockScroll = false;
        } else {
            lockScroll = true;
        }

        lastX = ev.getX();
        break;
    }

    lastX = ev.getX();

    if(lockScroll) …
Run Code Online (Sandbox Code Playgroud)

android swipe android-viewpager

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

如何获得ActionBar视图?

我正在使用该Showcase库向用户解释我的应用程序功能.在某些方面,我需要调暗整体ActionBar以向用户呈现另一个功能.

为此,我正在使用setAlpha(float num)View课程.因此,为了做到这一点,我需要得到我的实际视图实例ActionBar

顺便说一句,我正在使用support-7-appcompat为旧系统提供ActionBar支持的库.

更新

在此期间,如果您配置自定义视图并ActionBar使用以下命令将其添加到您,我找到了此选项:

getSupportActionBar().setCustomView(v);
Run Code Online (Sandbox Code Playgroud)

然后得到ViewActionBar,你可以这样做:

(View) activity.getSupportActionBar().getCustomView().getParent().getParent()
Run Code Online (Sandbox Code Playgroud)

有更简单或更简单的方法吗?

android view android-actionbar showcaseview android-actionbar-compat

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

如何使用Volley库和NetworkImageView在setImageUrl上完成回调?

我正在试用Google的新Volley库,当我使用这种方法时,它看起来很清晰,可以快速加载图像setImageUrl:

holder.image.setImageUrl(url, ImageCacheManager.getInstance().getImageLoader());
Run Code Online (Sandbox Code Playgroud)

我想在其中添加一个回调/侦听器方法,该方法将在加载完成后启动,因此我可以删除progressBar视图并显示图像.这是Universal Image Loader和Picasso库中存在的一个选项,但出于某种原因,我找不到在Volley中这样做的方法,尝试了Google的不同选项,但到目前为止还没有找到任何参考.

有人有代码示例来说明它是如何完成的吗?

android image callback listener android-volley

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

多个dex文件定义<my package>/BuildConfig,找不到原因:

我正在使用新的gradle构建系统,我遇到了以下问题:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/kibo/mobi/BuildConfig;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)
Run Code Online (Sandbox Code Playgroud)

打印依赖项我什么都看不到,这里是:

 firstDebugCompile - ## Internal use, do not manually configure ##
 \--- KiboGradle:KiboSDK:unspecified
 +--- KiboGradle:TextInputAPI:unspecified
 +--- KiboGradle:VoiceImeUtils:unspecified
 +--- com.google.android.gms:play-services:5.0.77
 |    \--- com.android.support:support-v4:19.1.0
 +--- com.squareup.picasso:picasso:2.3.2
 +--- com.google.code.gson:gson:2.2.4
 \--- com.crittercism:crittercism-android-agent:4.5.1
Run Code Online (Sandbox Code Playgroud)

我试图验证问题不是重复的支持库,所以我尝试添加:

compile ('com.google.android.gms:play-services:5.0.77'){
    exclude module: 'support-v4'
}
Run Code Online (Sandbox Code Playgroud)

这导致一些support-v4库类无法找到的错误,因此这个库不能从任何其他位置编译.

有一件事我脑子里想的,可能会导致这个问题是我使用的事实Flavorsfeautre在oreder创建我有不同的国土资源文件的应用程序的多个版本.

当我查看错误中的文件时,我看到了:

**
* Automatically generated file. DO NOT MODIFY …
Run Code Online (Sandbox Code Playgroud)

java android gradle dex android-productflavors

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

点击片段后面的隐形布局:

我创建了几个片段,并按以下方式添加第一个片段:

mainFragment = (MainFragment) MainFragment.create();
    getSupportFragmentManager().beginTransaction()
    .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
    .add(R.id.content, mainFragment, MAIN_FRAGMENT_TAG)
    .commit();
Run Code Online (Sandbox Code Playgroud)

第二个片段以这种方式添加:

     getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
    //.hide(mainFragment)
    .add(R.id.content,VenueFragment.create(vid), "Venue Fragment")
    .addToBackStack(null)
    .commit();
    setDrawerIndicatorEnabled(false);
Run Code Online (Sandbox Code Playgroud)

现在你看到hide方法没有应用于这个事务,并且VenueFragment打开了,在这种情况下的问题是,当VenueFragment按下这个片段的空部分时打开(并且它是一个全屏视图)调用MainFragment可点击视图的调用.我怎么能阻止这个?

如果我使用隐藏选项,那么它不会发生,但由于某种原因,删除它的动画MainFragment正在上升,这会产生一种奇怪的体验.

android android-fragments fragmenttransaction fragmentmanager

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

如何在android中水平和垂直滚动表格布局

我对表格布局滚动感到困惑.我必须实现水平和垂直滚动表.我也看到了表修复标题示例,但tablefixheader示例使用了适配器来设置数据,但我需要在表格布局中添加视图方法.我使用下面的代码,但它不支持两种方式滚动

      <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scrollbars="vertical" >

        <HorizontalScrollView
            android:layout_width="match_parent"
            android:layout_height="fill_parent" 
            android:fadeScrollbars="false">

            <TableLayout
                android:id="@+id/tableLayoutId"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </HorizontalScrollView>
    </ScrollView>
Run Code Online (Sandbox Code Playgroud)

android android-intent android-layout

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

让我的班级实现Cloneable有什么意义?

我遇到了一些实现的类代码,Clonable文档说明:

类实现了Cloneable接口,以向Object.clone()方法指示该方法合法地为该类的实例制作字段的字段副本.在未实现Cloneable接口的实例上调用Object的clone方法会导致抛出异常CloneNotSupportedException.按照惯例,实现此接口的类应使用公共方法覆盖Object.clone(受保护).有关重写此方法的详细信息,请参阅Object.clone().请注意,此接口不包含克隆方法.因此,仅仅通过实现该接口的事实来克隆对象是不可能的.即使反射调用clone方法,也无法保证它会成功.

我无法理解实现这个类的重点,正如文档中所述,该.clone方法没有在接口中实现,我必须实现它.那么为什么要使用这门课?为什么我不在copyClass我的类中编写一个方法来制作对象副本而不执行这个类?

提前致谢.

java cloneable

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