标签: flags

任何人都知道缺乏枚举通用约束的好方法吗?

我想要做的是这样的:我有枚举标记值的枚举.

public static class EnumExtension
{
    public static bool IsSet<T>( this T input, T matchTo ) 
        where T:enum //the constraint I want that doesn't exist in C#3
    {    
        return (input & matchTo) != 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

那么我可以这样做:

MyEnum tester = MyEnum.FlagA | MyEnum.FlagB

if( tester.IsSet( MyEnum.FlagA ) )
    //act on flag a
Run Code Online (Sandbox Code Playgroud)

不幸的是,C#的通用,其中约束没有枚举限制,只有类和结构.C#不会将枚举视为结构(即使它们是值类型),因此我无法像这样添加扩展类型.

有没有人知道解决方法?

.net c# enums flags

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

海湾合作委员会:游行与mtune有何不同?

我试图为此刷新GCC手册页,但仍然没有得到它,真的.

-march和之间有什么区别-mtune

什么时候才使用-march,而不是两者兼而有之?是否有可能只是-mtune

compiler-construction optimization flags gcc options

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

禁用保持屏幕

我用了:

getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

如何恢复默认状态(不保持)?

flags android

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

在Android中启动新活动并完成当前活动?

目前我正在开始一个新的,Activity并呼吁finish当前的.

是否有任何可以传递给Intent它的标志,可以在Activity不需要finish从代码中手动调用的情况下完成当前的操作?

flags android android-activity start-activity

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

枚举标志超过2 ^ 32

我在我的应用程序中使用Enum标志.Enum可以有大约50个以上的值,因此值可以达到2 ^ 50.我只是想知道,我可以用它Math.Pow(2, variable)来计算这些吗?

当我尝试这样做时,我得到一个恒定值的编译时错误.有没有其他方法,除了手动计算2的这些权力并将其放入?

这就是我在做的事情:

[Flags]
internal enum RiskStates : long
    {
        None = 0,
        AL = Convert.ToInt64(Math.Pow(2,0)),
        AK = 2,
        AZ = 4,
        AR = 8,
        CA = 16,
        CO = 32,
        CT = 64,
        DC = 128,
        DE = 256,
        FL = 512,
        GA = 1024,
        HI = 2048,
        ID = 4096,
        IL = 8192,
        IN = 16384,
        IA = 32768,
        KS = 65536,
        KY = 131072,
        LA = 262144,
        ME = 524288, …
Run Code Online (Sandbox Code Playgroud)

c# enums flags

67
推荐指数
2
解决办法
3789
查看次数

从Android应用安装程序和主屏幕启动应用程序时的活动堆栈排序问题

仅出于测试目的,我允许通过URL下载和安装我的应用APK.下载到手机上后,可以使用Android应用安装程序启动它,用户可以选择将其安装到自己的设备上然后再运行.

考虑我们是否以上述方式下载并运行应用程序.我的应用中的主/启动器活动是登录页面(Activity A).一旦用户被认证,他们就被带到应用程序的主要区域,例如Activity B.所以现在这个任务的当前活动堆栈是A > B.

然后我按下手机上的主页按钮,然后进入Android主屏幕.我通过菜单中的图标重新启动我的应用程序,我被带到了Activity A,而不是Activity B.活动堆栈现在是A > B > A,或者现在有两个单独的任务与活动堆栈A > B,A分别.我想要的是Activity B在我重新启动应用程序时被收回.在这种状态下按回来将带我回去Activity B.

如果我首先通过安装程序打开应用程序,而不是通过主屏幕/菜单打开应用程序,则只会发生这种不良行为.

我研究了各机制如何开展活动.当我们使用app安装程序时,我们会看到以下日志:

INFO/ActivityManager(XXXX): Starting activity: Intent { dat=file:///mnt/sdcard/download/[my app].apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) }
INFO/ActivityManager(XXXX): Starting activity: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=[my package]/[Activity A] }
Run Code Online (Sandbox Code Playgroud)

通过发射器/主屏幕:

INFO/ActivityManager(XXXX): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=[my package]/[Activity A] }
Run Code Online (Sandbox Code Playgroud)

当使用安装程序启动时,我们看到它正在使用标志0x10000000,但是当启动器启动时,我们看到它正在使用0x10200000.它也使用意图类别.

从 …

flags android task android-intent android-activity

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

JavaScript中的枚举标志

我需要在Javascript中模拟枚举类型,方法看起来非常简单:

var MyEnum = {Left = 1; Right = 2; Top = 4; Bottom = 8}
Run Code Online (Sandbox Code Playgroud)

现在,在C#中我可以将这些值组合起来:

MyEnum left_right = MyEnum.Left | MyEnum.Right
Run Code Online (Sandbox Code Playgroud)

然后我可以测试枚举是否具有一定的价值:

if (left_right & MyEnum.Left == MyEnum.Left) {...}
Run Code Online (Sandbox Code Playgroud)

我可以在Javascript中做类似的事情吗?

javascript enums flags

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

检查标志位java

我有标志位的问题.我有一个int变量来保存标志.首先,我为该变量设置了一些标志.后来我需要检查该变量中设置了多少个标志.但我不知道这样做.

java flags bit-manipulation

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

启用Enum(带Flags属性)而不声明每个可能的组合?

我如何打开一个设置了flags属性的枚举(或更精确地用于位操作)?

我希望能够在与所声明的值匹配的开关中击中所有情况.

问题是,如果我有以下枚举

[Flags()]public enum CheckType
{
    Form = 1,   
    QueryString = 2,
    TempData = 4,
}
Run Code Online (Sandbox Code Playgroud)

我想用这样的开关

switch(theCheckType)
{
   case CheckType.Form:
       DoSomething(/*Some type of collection is passed */);
       break;

   case CheckType.QueryString:
       DoSomethingElse(/*Some other type of collection is passed */);
       break;

   case CheckType.TempData
       DoWhatever(/*Some different type of collection is passed */);
       break;
}
Run Code Online (Sandbox Code Playgroud)

如果"theCheckType"设置为CheckType.Form | CheckType.TempData我希望它能同时击中两个案例.显然,由于中断,它不会在我的示例中同时出现,但除此之外它也会失败,因为CheckType.Form不等于CheckType.Form | CheckType.TempData

那么我能看到的唯一解决方案就是为每个可能的枚举值组合做一个案例?

就像是

    case CheckType.Form | CheckType.TempData:
        DoSomething(/*Some type of collection is passed */);
        DoWhatever(/*Some different type of collection is passed */);
        break; …
Run Code Online (Sandbox Code Playgroud)

c# enums flags bit switch-statement

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

材质设计layout_scrollFlags含义

我发现我们可以使用酷炫的标志来滚动工具栏甚至内容layout_scrollFlags.就我而言,我有这样的布局:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="snap"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="fixed"
            app:tabGravity="fill" />
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

我的标签之一是fragment与它的版面Recycle Viewedittext该RecycleView下方.首先,我想知道这面旗帜意味着什么

谷歌说:

  • SCROLL_FLAG_ENTER_ALWAYS
    当进入(在屏幕上滚动)时,无论滚动视图是否也在滚动,视图都会滚动任何向下滚动事件.
  • SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED'enterAlways
    '的另一个标志,它修改返回的视图,最初只回滚到它的折叠高度.
  • SCROLL_FLAG_EXIT_UNTIL_COLLAPSED
    当退出(滚动屏幕)时,视图将滚动直到"折叠".
  • SCROLL_FLAG_SCROLL
    视图将滚动与滚动事件直接相关.
  • SCROLL_FLAG_SNAP
    滚动结束时,如果视图仅部分可见,则它将被捕捉并滚动到它最近的边缘.

我随机更改了这个标志,在某些情况下,我的编辑文本消失,直到我向上滚动工具栏然后编辑出现.我阅读谷歌文档,但我不能很好.我想简单地理解它.

flags android scroll android-layout material-design

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