我在logcat中收到以下警告.
getExtractedText on inactive InputConnection
Run Code Online (Sandbox Code Playgroud)
我无法找到背后的原因.请帮忙
我正在使用Log4Net 2.0,我根据需要工作,但是为特定的日志语句添加另一个记录器.所有日志记录都是针对单个文件追加器完成的.我想要做的更改是第三方应用程序触发包含调试/错误信息的事件,我可以捕获这些信息,虽然有用但我觉得它污染了正常的应用程序日志文件,而是宁愿将它存储在自己的日志中文件.
我想要的最终结果是一个名为log-file.txt
来自应用程序的所有日志记录的文件,除了第三方日志记录.并且第二个文件log-file-3rdparty.txt
仅使用第三方应用程序进行日志记录.我的问题是设置Log4Net有2个单独的记录器.我已经尝试创建第二个LogFileAppender并将其添加到root,但是所有这一切都将相同的日志记录语句放入两个记录器中.
在整个应用程序中,我们目前拥有GetLogger语句,如下所示.理想情况下,这需要保持不变,因此现有的日志记录不会改变.我需要一个不受此语句影响的新记录器,而是纯粹为第三方记录实例化.
private readonly ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
而App.Config如下.
< log4net>
<logger name="MyApp.Logging">
<level value="DEBUG"/>
</logger>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value=" [Application started] " />
<param name="Footer" value="[Application Finished] "/>
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
</ log4net>
Run Code Online (Sandbox Code Playgroud)
你能帮我吗?
编辑
如果它有任何区别.第三方日志事件捕获在同一个类中,我的一些应用程序日志事件也被触发,这是因为该类负责控制第三方软件.这是一个问题吗?我确实有一些想法,log4net可以区分基于类名创建的记录器,如果是这样的话,我是否需要重构第三方记录到自己的类?
我正在继续学习WPF,目前专注于MVVM并使用Karl Shifflett的"MVVM In a Box"教程.但是有一个关于在views/viewmodels之间共享数据以及它如何在屏幕上更新视图的问题.ps我还没有报道过IOC.
下面是我在测试应用程序中的MainWindow的屏幕截图.它分为3个部分(视图),一个标题,一个带按钮的滑动面板,其余部分作为应用程序的主视图.应用程序的目的很简单,登录到应用程序.在成功登录后,登录视图应该被新视图(即OverviewScreenView)替换,并且应用程序幻灯片上的相关按钮应该可见.
我认为应用程序有2个ViewModel.一个用于MainWindowView,另一个用于LoginView,因为MainWindow不需要具有Login命令,所以我将它保持独立.
由于我还没有介绍过IOC,我创建了一个LoginModel类,它是一个单例.它只包含一个属性"public bool LoggedIn",以及一个名为UserLoggedIn的事件.
MainWindowViewModel构造函数注册到事件UserLoggedIn.现在在LoginView中,当用户在LoginView上单击Login时,它会在LoginViewModel上引发一个命令,如果正确输入了用户名和密码,则会调用LoginModel并将LoggedIn设置为true.这会导致UserLoggedIn事件触发,这将在MainWindowViewModel中处理,以使视图隐藏LoginView并将其替换为不同的视图,即概览屏幕.
问题
Q1.明显的问题,就是这样登录正确使用MVVM.即控制流程如下.LoginView - > LoginViewViewModel - > LoginModel - > MainWindowViewModel - > MainWindowView.
Q2.假设用户已登录,并且MainWindowViewModel已处理该事件.您将如何创建新视图并将其放在LoginView所在的位置,同样如何在不需要时处理LoginView.MainWindowViewModel中是否存在类似"UserControl currentControl"的属性,该属性设置为LoginView或OverviewScreenView.
Q3.MainWindow是否应该在visual studio设计器中设置LoginView.或者它应该留空,并以编程方式确认没有人登录,因此一旦加载MainWindow,它就会创建一个LoginView并在屏幕上显示它.
下面的一些代码示例是否有助于回答问题
MainWindow的XAML
<Window x:Class="WpfApplication1.MainWindow"
xmlns:local="clr-namespace:WpfApplication1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="372" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<local:HeaderView Grid.ColumnSpan="2" />
<local:ButtonsView Grid.Row="1" Margin="6,6,3,6" />
<local:LoginView Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
MainWindowViewModel
using System;
using System.Windows.Controls;
using WpfApplication1.Infrastructure;
namespace WpfApplication1 …
Run Code Online (Sandbox Code Playgroud) 我不认为这是可能的,因为我还没有在SDK文档中找到任何内容.
但我知道是否有可能编写一个记录Toast消息的应用程序.记录哪个应用程序显示它以及显示的消息包含什么.
这是完全个人的努力来创建可以检测吐司消息的应用程序.因为我的手机上的东西正在创建一个叫"发送..."的祝酒词,每天约一次,而对于我的生活,我无法追踪有问题的应用程序(服务类).我认为它可能是GMail或Evernote,但是发送的Toast消息略有不同.我打算建立一个应用程序,因为1)我不知道LogCat是否会显示任何内容,2)我不想让我的个人/开发电话一直插入PC(如"发送" ......"消息很少发生".
我不是一个单身人士的仇敌,但我知道他们受到了虐待,因此我想学会在不需要的时候避免使用它们.
我正在开发一个跨平台的应用程序(Windows XP/Vista/7,Windows Mobile 6.x,Windows CE5,Windows CE6).作为流程的一部分,我将代码重新分解为单独的项目,以减少代码重复,从而有机会修复初始系统的错误.
正在分离的应用程序的一个这样的部分非常简单,它是一个概要管理器.该项目负责存储配置文件.它有一个Profile
类,其中包含应用程序所有部分使用的一些配置数据.它有一个ProfileManager
包含的类Profiles
.在ProfileManager
将读取/保存Profiles
在硬盘作为单独的XML文件,并允许检索和设置"活动"应用程序Profile
.简单.
在第一个内部构建中,GUI是反模式SmartGUI.这是一个没有MVC/MVP的WinForms实现,因为我们希望它能够更快地工作而不是精心设计.这导致ProfileManager
了单身人士.这在应用程序的任何地方都是如此,GUI可以访问活动Profile
.
这意味着我可以ProfileManager.Instance.ActiveProfile
根据需要去检索系统不同部分的配置.每个GUI也可以对配置文件进行更改,因此每个GUI都有一个保存按钮,因此它们都可以访问ProfileManager.Instance.SaveActiveProfile()
方法.
我认为在这里使用单身人士并没有错,因为我认为它没有任何错误,但我知道单身人士并不理想.有没有更好的方法来处理?是否应将ProfileManager的实例传递到每个Controller/Presenter?创建ProfileManager时,是否应创建其他核心组件,并在更改配置文件时注册事件.这个例子非常简单,可能是许多系统中的一个常见功能,所以认为这是学习如何避免单身人士的好地方.
Ps我不得不针对Compact Framework 3.5构建应用程序,它确实限制了很多可以使用的普通.Net Framework类.
我有一个现有的应用程序,现在需要与移动设备进行交互.移动设备具有wifi连接,并且将连接到在LAN上托管主应用程序的PC.移动设备只需添加/编辑/查找/删除主应用程序正在维护的对象.主应用程序已将其功能封装在一些简单的存储库类中.
我相信这种方法是向主应用程序添加一个WCF服务,该服务公开了移动设备可以调用的一组方法.但是我今天查找了WCF并试图设置一个示例应用程序,但是当调用WCF方法时它无法访问任何数据,因此我觉得WCF服务在其自己的应用程序域中运行,因此无法访问主应用程序中的相同静态类.
如果我在VS 2008/2010中设置WCF服务项目,我如何在与主WinForms应用程序相同的应用程序域下运行它,以便LAN上的远程应用程序可以与它通信以从应用程序获取数据.
下面是我的WinForm示例
using System;
using System.ServiceModel;
using System.Windows.Forms;
using DataProject;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public TestDataProject.DataStore Datastore = TestDataProject.DataStore.GetInstance();
public Form1()
{
InitializeComponent();
Datastore.Add(new MyObj { ID = 1, Data = "hello" });
Datastore.Add(new MyObj { ID = 2, Data = "world" });
Datastore.Add(new MyObj { ID = 3, Data = "item3" });
Datastore.Add(new MyObj { ID = 4, Data = "item4" });
Datastore.Add(new MyObj { ID = 5, Data = …
Run Code Online (Sandbox Code Playgroud) 我搜索过但没有找到类似的问题,因为我不确定如何在一个句子中逐步进行.我正在使用ActionBarSherlock,带有徽标而不是启动器图标(即72x72图标),活动的顶角有文本.
当活动第一次加载时,只需几分之一秒.在带有徽标的操作栏出现之前,我会看到清单中定义的启动器图标和标签(如下所示).这个家庭活动非常简单,所以它没有做任何可能导致延迟的额外装载.
<application
android:hardwareAccelerated="true"
android:icon="@drawable/launcher_icon"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<activity
android:name=".SplashScreenActivity"
android:label="@string/app_name"
android:logo="@drawable/ab_logo"
android:theme="@android:style/Theme.Light.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".HomeActivity"
android:label="@string/homeitle"
android:logo="@drawable/ab_logo"
android:theme="@style/MyTheme" >
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
我可以通过将文本设置为与背景相同的颜色来使文本"消失",但是我无法找到从活动中删除/隐藏启动器图标的方法.
我已经设置了一个启动画面活动(如上面的清单所示),它只会加载发生问题的家庭活动.这确实有帮助,但有时加载活动时仍会出现问题.
public class SplashScreenActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public void onResume()
{
super.onResume();
Intent i = new Intent(getBaseContext(), HomeActivity.class);
startActivity(i);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道隐藏启动器图标和标题标签的方法,以便在显示ActionBarSherlock之前它不显示?理想情况下,不需要启动屏幕,因为有几种方法可以访问活动,这将避免上面显示的启动画面.
---更新我的主题文件----
<style name="MyTheme" parent="Theme.Sherlock.ForceOverflow">
<item name="android:windowBackground">@color/white</item>
<item name="android:actionBarStyle">@style/MyTheme.ActionBar</item>
<item name="android:actionMenuTextColor">@color/white</item>
<item name="actionBarStyle">@style/MyTheme.ActionBar</item>
<item name="actionMenuTextColor">@color/white</item>
</style>
<style …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个相当轻量级的客户端应用程序(.Net中的桌面应用程序,因为将来可能需要连接其他应用程序),以便为工程师跟踪业务中的RMA,工程师将查看和更新应用程序中的状态,客户将在网站上创建/查看RMA.
我想知道我对服务和存储库类的预期用法是否正确.Web服务以JSON格式提供数据,我可以从中构造RMA
对象.此Web服务可通过以下方式访问http://myRMA.com/repairs/2234/RMA.JSON
RMARepository
使用类似方法获取RMA的代码是否会在类中GetRMA(int RMAId)
,并且应该RMARepository
遵循单例设计模式吗?
如果更新RMA,即项目正在检查并等待报价接受,则在服务类中完成,该服务类调用RMARepository来提交更新.请问IsExists(int RMAId)
在这个服务类或者是在仓库?
我熟悉Presentation - Application(Logic) - Data Access - Data(Database)artitecture,以及MVP.但我确实想知道Service
课程适合哪里.
我正在尝试学习WPF,并试图通过使用样式使默认的.Net控件看起来不同.使用C#作为我的首选语言,尽管下面的所有代码都是WPF标记.
我今天用新主题设置了gmail(见下图),从而让我自己成为挑战,可以在WPF中完成.
我设法实现的是Spam
通过使用带有控件模板和触发器的样式来创建中间按钮.
右侧和左侧按钮非常相似,但只有2个不同.它们的左侧或右侧的圆角半径为1,边距为15,而中间的按钮则将它们都设置为0.
问题!
Q1.可以通过某种类型的继承来完成,而不是复制整个样式并仅更改这两个属性.右侧和左侧按钮的位置基于现有样式,但它会进行2次视觉更改.我在创建新样式时已尝试过BasedOn属性,但无法编辑所需的属性.
Q2.样式是在WPF中解决此问题的正确方法.在WinForms中,您将创建一个自定义控件,该控件具有链接到枚举的可见属性,即您单击按钮,样式选项可能是Left,Middle,Right.
Q3.最难的问题直到最后.是否可以制作它,所以如果一个按钮应用了我的风格.然后当您将其背景颜色设置为蓝色时.然后按钮保持渐变但不是它们是灰白色,而是现在是蓝色的阴影.即背景线性渐变画笔基于,而不是覆盖已应用于按钮的背景颜色.或者这些需要定义单独的样式.我个人看不到没有某种类型的代码可以实现这一点,即在WPF标记中使用单个画笔制作渐变画笔.
即按钮如下方的蓝色按钮和灰色/普通按钮
我的风格
<Style x:Key="GoogleMiddleButton" TargetType="{x:Type Button}">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,1" EndPoint="0,0">
<GradientStop Color="#F1F1F1" Offset="0"/>
<GradientStop Color="#F5F5F5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="#666666"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="dropShadowBorder"
BorderThickness="0,0,0,1"
CornerRadius="1"
>
<Border.BorderBrush>
<SolidColorBrush Color="#00000000"/>
</Border.BorderBrush>
<Border Name="border"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
CornerRadius="0"
Background="{TemplateBinding Background}">
<Border.BorderBrush>
<SolidColorBrush Color="#D8D8D8"/>
</Border.BorderBrush>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</Border> …
Run Code Online (Sandbox Code Playgroud) 描述
我有一个活动,在表面视图上显示相机预览.我不希望它在方向更改时重新启动(因为它不断扫描QR码),因此方向被锁定为纵向.
我遇到的问题是我需要在屏幕底部向用户显示屏幕上的说明.鉴于屏幕被锁定在一个方向,我不会收到新方向的通知,因为活动没有重新绘制.因此,无论手机处于纵向,纵向,横向还是尊重的景观,指令都在同一个地方呈现.
为了解决这个问题,我联系了传感器管理器,实时读取方向.(请参阅下面的代码)阅读完之后,我自己制定了方向,并根据需要移动我的说明,因为每次更新都会发送给我.到目前为止,这一直对我有用.在华硕Transformer Prime和Xoom平板电脑上进行测试时.平板电脑将方向返回为"90"表示纵向,而不是像其他2部手机一样返回"0".因此,您可以在下面的代码中看到,我检查平板电脑(大屏幕)并减去额外的90度.
问题
问题是新的Nexus 7平板电脑没有这种额外的偏见.在肖像中它返回"0",但我将其检测为平板电脑,因此减去90度因此结果为270并且它将我的指示放置为平板电脑处于横向模式.我假设背后的原因是Xoom/Transformer设计用于横向,Nexus用于纵向,但除非我知道所有受影响的设备,否则无济于事.
题
是否有一种可靠的方法来检测所有设备的方向并"实时"返回结果,如下面的代码所示,但是考虑到设备的默认方向(即Phones + Nexus 7是纵向,但大多数平板电脑都是景观)?
现行守则
boolean large = ((getBaseContext().getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE);
boolean xlarge = ((getBaseContext().getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
isTablet = large || xlarge;
myOrientationEventListener = new OrientationEventListener(getBaseContext(), SensorManager.SENSOR_DELAY_NORMAL)
{
@Override
public void onOrientationChanged(int orientation)
{
if (orientation == -1)
{
return;
}
if (isTablet)
{
orientation += -90;
if (orientation < 0) // keep the result between 0-360
{
orientation += 360;
}
}
// Work out the …
Run Code Online (Sandbox Code Playgroud) android sensor orientation screen-orientation android-sensors