小编Ale*_*dro的帖子

可选参数"必须是编译时常量"

我有一个分为两个部分文件的类,如下所示:

public partial class PersonRepository : BaseRepository<Person>
{
    public static readonly string ColumnID = "ID";
    ...
Run Code Online (Sandbox Code Playgroud)

public partial class PersonRepository : BaseRepository<Person>
{
    public List<Person> GetByCompany(int companyID, string sortExpression = ColumnID)
    {
    ...
Run Code Online (Sandbox Code Playgroud)

但编译器一直说sortExpression"必须是编译时常量".对我来说,这似乎是一个完美的编译时常量,所以我不明白问题出在哪里.

.net c#

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

跨DAO的Android Room交易

官方文件指出:

It is recommended to have multiple Dao classes in your codebase depending on the tables they touch.
Run Code Online (Sandbox Code Playgroud)

并且可以使用Transaction注释标记方法,如下所示:

 @Dao
 public abstract class ProductDao {
    @Insert
     public abstract void insert(Product product);
    @Delete
     public abstract void delete(Product product);
    @Transaction
     public void insertAndDeleteInTransaction(Product newProduct, Product oldProduct) {
         // Anything inside this method runs in a single transaction.
         insert(newProduct);
         delete(oldProduct);
     }
 }
Run Code Online (Sandbox Code Playgroud)

但是,如果一个事务跨越多个DAO怎么办?我应该将所有DAO合并为一个只是为了支持交易,还是有更好的方法来做到这一点?

sqlite android persistence dao android-room

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

ViewPager:为第一页和最后一页设置不同的填充

我已经为我的ViewPager实现了"页面查看"功能:

mPager.setClipToPadding(false);
mPager.setPadding(120, 0, 120, 0);
mPager.setPageMargin(60);
Run Code Online (Sandbox Code Playgroud)

这样做我能够查看上一页和下一页的一部分.但是第一页和最后一页显示了更大的空白区域,因为在这个方向上没有其他页面可以显示.

如何为第一页和最后一页设置不同的填充?

android margin padding android-viewpager

8
推荐指数
1
解决办法
2387
查看次数

BottomNavigationBar 无需一次加载所有页面

我有一个带有 BottomNavigationBar 和 IndexedStack 的屏幕,它根据底部栏索引交换子视图。

一切都很好,除了所有四个页面都是同时创建的,加载的数据相当繁重,并使应用程序减慢了几秒钟。

是否有一个设置允许我仅在点击相应选项卡时加载每个页面?

tabs flutter bottomnavigationview

8
推荐指数
1
解决办法
1825
查看次数

Firebase令牌刷新

Firebase文档明确指出FirebaseInstanceIdService应该实现访问刷新令牌,并且不再需要手动注册,因为库关心所有进程.

问题是onTokenRefresh只调用一次,如果在将其传输到我的服务器的过程中出现问题,应用程序必须等到下次刷新或完全卸载/重新安装.

我可以应用与之前的GCM实现相同的逻辑吗?也就是说,在我的应用程序的每次启动时,我都使用令牌FirebaseInstanceId.getInstance().getToken()并将其发送到我的服务器,而不是关心它是否已被发送.完成同样的事情onTokenRefresh.

这种方法有任何缺陷吗?

android token firebase google-cloud-messaging

7
推荐指数
2
解决办法
8361
查看次数

Mac M1 上的 Flutter 项目:找不到模块

我有一个 Flutter 项目,可以在 Intel Mac 上正常运行。现在我正在尝试在配备 M1 芯片的 MacBook Pro 上构建,但我陷入了Module 'xxx' not found困境GeneratedPluginRegistrant.m

在同一台机器上使用 Android Studio 构建项目,但不在 Xcode 上构建。Podfile 是 Fl​​utter 生成的标准文件。

我已经尝试了围绕 ffi、cocoapods、rosetta 的各种解决方案和命令,但没有运气。

任何想法?

xcode cocoapods android-studio flutter apple-m1

6
推荐指数
0
解决办法
282
查看次数

AppBarLayout滚动工具栏下方的内容

我想在我的工具栏下面有一个内容区域.它的行为应该是在向上滚动时滚动并在向下滚动时立即进入.工具栏应保持在其位置而不进行任何滚动.

我的布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

        <RelativeLayout
            android:id="@+id/box_search"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:layout_scrollFlags="scroll|enterAlways">

            <TextView
                android:id="@+id/text_search_filter"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Line 1"
                android:textColor="#FFF" />

            <TextView
                android:id="@+id/text_search_category"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/text_search_filter"
                android:text="Line 2"
                android:textColor="#FFF" />

            <TextView
                android:id="@+id/text_search_location"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/text_search_category"
                android:text="Line 3"
                android:textColor="#FFF" />
        </RelativeLayout>
    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_add_white_24dp" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

如果我将内容区域放在工具栏上方,我可以获得所需的效果,但显然它处于错误的位置.

如果我把内容区域放在工具栏下面没有任何滚动...

android android-toolbar android-coordinatorlayout android-appbarlayout

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

管理会话数据的更好方法

我需要在Session中保留一些数据.我写了很多这样的属性:

public List<string> FillOrder
{
    get { return Session[SessionKeys.QueryFillOrder] as List<string> ?? new List<string>(); }
    set { Session[SessionKeys.QueryFillOrder] = value; }
}
Run Code Online (Sandbox Code Playgroud)

当我必须使用这些数据时,我必须编写这样的代码:

List<string> fillOrder = FillOrder;
fillOrder.Add(accordion.ID);
FillOrder = fillOrder;
Run Code Online (Sandbox Code Playgroud)

在我看来这么难看,因为我更愿意这样做:

FillOrder.Add(accordion.ID);
Run Code Online (Sandbox Code Playgroud)

但这样我的价值就不会保存在Session中.

你能想出更好的方法来达到同样的效果吗?

非常感谢你!

.net c# asp.net

4
推荐指数
1
解决办法
3521
查看次数

仅当第一次失败时才执行第二次 http 调用

尝试通过管道传输两个 Angular http 调用,仅当第一个调用失败时才执行第二个调用。

第一个电话是:

 return this.http.get<AssetGroupHistoryResponseModel>('./assets/data.json');
Run Code Online (Sandbox Code Playgroud)

如果 data.json 不存在,则会引发 404 Not Found 错误,它应该调用适当的 API:

return this.http.get<AssetGroupHistoryResponseModel>(url);
Run Code Online (Sandbox Code Playgroud)

不知道如何使用 rxjs 获得这种行为。

http reactive-programming rxjs angular

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

我应该继续使用自制的ORM吗?

这是关于Stack Overflow的第一个问题,所以提前感谢您的帮助!:)

在过去的两年里,我开发了一个自制的.NET ORM,我在一些中小型项目中使用它.其主要特点是:

  • 使用属性从数据库映射到对象
  • 丰富的对象语法,使用提供程序将SQL查询写入不同的RDBMS
  • 使用提供程序连接和交易到不同的RDBMS
  • 延迟加载,相关实体,自动验证
  • 自动缓存以前的查询结果
  • 使用实体结构自动生成数据库模式
  • 基于Thread文化的实体自动本地化

现在我处在一个十字路口:我必须决定是否继续我的解决方案并实现其他功能,如并发控制或宣布它已经死亡,并从现有的解决方案开始,如nHibernate.

我是那种喜欢自己重新发明轮子的人......等等......

我错过了什么吗?这是开始走在更安全的道路上的时刻吗?

非常感谢,对不起我的基本英语.

亚历山德罗

.net orm

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