小编Flo*_*anu的帖子

android以编程方式更新apk并查看安装结果

我正在为我的应用编写应用更新程序.确保我在设备上安装了apk后,这就是我在应用程序中执行的操作,我正在尝试更新:

Intent promptInstall = new Intent(Intent.ACTION_VIEW);
File f = new File(apkLocation);    
promptInstall.setDataAndType(Uri.fromFile(f), "application/vnd.android.package-archive");
_context.startActivity(promptInstall);
Run Code Online (Sandbox Code Playgroud)

这将启动我的安装程序,显示应用程序权限,然后我可以单击"安装".但是从这里应用程序只是关闭,我得不到任何消息(我会期望对话框告诉我安装成功,让我选择按"关闭"或"打开").它只是进入设备的主屏幕,恕不另行通知.

另外,当我手动打开它时,应用程序确实已更新.如何让安装程序按预期完成?是否有任何意图设定?

在写这篇文章的时候,我想知道这种情况发生的原因是当前应用程序只是在设备上被覆盖,从而关闭它并且程度上没有得到意图的结果,因为它的源被杀死了?

android android-intent apk android-install-apk

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

每次使用Moq调用方法时,如何使Mock返回一个新列表

我正在使用MOQ模拟带有预期返回列表的方法调用.我的方法返回一个列表,但我希望每次调用该方法时,mock都会创建一个新列表.到目前为止我做了什么:

List<Correlation> expected = new List<Correlation> { new Correlation() { Code = "SelfError1" }, new Correlation() { Code = "SelfError2" } };
Mock<IRPLValidator> selfMock = new Mock<IRPLValidator>();
selfMock.Setup(f => f.Validate()).Returns(expected);
Run Code Online (Sandbox Code Playgroud)

我想要实现的是每次调用方法时模拟返回一个新列表.我试过这个但是没有用:

selfMock.Setup(f => f.Validate()).Returns(new List<Correlation>{ new Correlation() { Code = "SelfError1" }, new Correlation() { Code = "SelfError2" } });
Run Code Online (Sandbox Code Playgroud)

由于这没有用,我想也许回调是我的问题的答案,但我没有找到重新初始化我的列表的任何正确的例子.有什么建议?

你可能想知道我为什么每次都需要一个新的列表,问题是我在不同的对象类型上调用方法在列表中进行一些更改,具体取决于对象类型.因为每次调用方法时mock都会给我相同的列表,所以我总是在内存中修改相同的对象,因此我无法跟踪我正在进行的更改.

提前致谢!

.net c# moq mocking

14
推荐指数
1
解决办法
2738
查看次数

wpf DataGrid.RowValidationErrorTemplate - 如何实际更改行外观而不是标题行?

我目前正在为我的数据网格使用行验证.我试图在行无效时更改行的外观.到目前为止我的代码在视觉上报告错误:

<DataGrid.RowValidationErrorTemplate>
            <ControlTemplate>
                <Grid Margin="0,-2,0,-2" Background="Red" HorizontalAlignment="Stretch"
        ToolTip="{Binding RelativeSource={RelativeSource
        FindAncestor, AncestorType={x:Type DataGridRow}},
        Path=(Validation.Errors)[0].ErrorContent}">
                    <TextBlock Text="!" FontSize="{TemplateBinding FontSize}" 
          FontWeight="Bold" Foreground="White" 
          HorizontalAlignment="Center"  />
                </Grid>
            </ControlTemplate>
        </DataGrid.RowValidationErrorTemplate>
Run Code Online (Sandbox Code Playgroud)

看来这只会影响我的标题行.有没有办法可以处理这个RowValidationErrorTemplate来修改行外观?我想把整行的背景变成红色或类似的东西.

有任何想法吗?如果我需要为此特定问题提供更多代码,请告诉我.提前致谢!

validation wpf templates row

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

MVF中的WPF Datagrid selecteditem = null

我正在尝试使用MVVM模式处理数据网格.问题是每当我将绑定到SelectedItem的VM属性更改为null时,View都不会"取消选择"当前选定的项目.这是我在xaml中的绑定:

<DataGrid Grid.Column="0" Grid.Row="0" 
    ItemsSource="{Binding Path=Users}" 
    AutoGenerateColumns="False" 
    CanUserAddRows="False" 
    IsReadOnly="True" 
    SelectedItem="{Binding Path=SelectedUser, Mode=TwoWay}">
Run Code Online (Sandbox Code Playgroud)

SelectedItem绑定从视图工作到VM,因此在SelectedUser属性中我总是拥有所选对象.问题是在VM中我正在做一些有时将SelectedUser属性更改为null的东西,所以我希望datagrid也取消选择该行.相反,它仍然处于选中状态,如果我尝试单击同一行,则该属性不会更新.如果我单击任何其他行,属性将按预期更改.

有没有办法让datagrid取消选择,如果它的binded属性设置为null?此外,我正在寻找一个MVVM解决方案,因为我不想编写代码.我可以通过编写代码解决这个问题,所以不要浪费时间提供这样的解决方案:)

le:这是我在VM中的属性:

public RPLUser SelectedUser
        {
            get
            {                
                return selectedUser;
            }
            set
            {
                selectedUser = value;
                OnPropertyChanged("SelectedUser");
            }
        }
Run Code Online (Sandbox Code Playgroud)

提前致谢!

wpf binding datagrid selecteditem mvvm

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