之前已经问过这个问题 - 但根本没有令人满意的答案!所以我再试一次.
我想给我的应用程序启动器图标(在开始屏幕上显示的图标!)一个不同的,更短的标题.似乎发射器从mainfest部分获取了关于主要活动标签的标签,如下所示:
<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
我已将此应用程序名称@ string/app_name的原始引用更改为其他更短的字符串资源.
但是 - 大但是:这当然也改变了这个活动的默认标题!而且我不希望这种情况发生,有足够的空间来申请长名称!onCreate使用该setTitle(int)方法再次设置长标题也没有用,因为短名称将在短时间内对用户可见,但需要足够长的时间才能注意到!
并且 - 请不要通过引用自定义标题栏来回答我的问题...我不想走那么长的路,只是因为一个愚蠢的字符串标题!绘制一个自定义标题栏以获得如此小的效果是一件痛苦的事!
有没有简单的方法只是给启动器一个不同的字符串来显示?谢谢你的回答!
编辑:拥有自定义标题栏的另一个原因是它看起来不像默认的标题栏,我必须明确地做一些事情,使它在每个设备上看起来都很相似!如果毕竟我不想要一个不同的外观,这不可能是一个解决方案!
我在rails中有一个方法就是这样做:
a = Foo.new("bar")
a.save
b = Foo.new("baz")
b.save
...
x = Foo.new("123", :parent_id => a.id)
x.save
...
z = Foo.new("zxy", :parent_id => b.id)
z.save
Run Code Online (Sandbox Code Playgroud)
问题是我添加的实体越多越长.我怀疑这是因为它必须为每条记录命中数据库.由于它们是嵌套的,我知道在父母得救之前我无法拯救孩子,但我想立刻拯救所有的父母,然后是所有的孩子.做一些像这样的事情会很好:
a = Foo.new("bar")
b = Foo.new("baz")
...
saveall(a,b,...)
x = Foo.new("123", :parent_id => a.id)
...
z = Foo.new("zxy", :parent_id => b.id)
saveall(x,...,z)
Run Code Online (Sandbox Code Playgroud)
这只会在两次数据库命中时完成.有没有一种简单的方法可以在rails中执行此操作,或者我一次只执行一次?
我正在使用六边形网格.我选择使用这个坐标系,因为它非常优雅.

这个问题谈论自己生成坐标,非常有用.我现在的问题是将这些坐标转换为实际像素坐标.我正在寻找一种简单的方法来找到坐标为x,y,z的六边形的中心.假设像素坐标中的(0,0)在六角形坐标中为(0,0,0),并且每个六边形具有长度为s的边缘.在我看来,像x,y和z每个都应该沿轴线移动我的坐标一定距离,但是它们以奇怪的方式相互关联,我无法将头围绕在它周围.
如果你可以转向另一个方向并将像素坐标中的任何(x,y)点转换为该点所属的十六进制,则可以获得奖励积分.
我正在努力将同步asp.net代码的主体转换为.net 4.5和新的异步语法.
我有很多看起来像的测试代码:
var retVal = new Foo(bar,baz);
_myMock.Setup(x => x.DoSomething(123)).Returns(retVal);
Run Code Online (Sandbox Code Playgroud)
当我从转换的DoSomething的签名Foo DoSomething()来async Task<Foo> DoSomething(),我所有的测试代码已经被改写.我目前的解决方法是将原始代码转换为:
var retVal = new Foo(bar,baz);
_myMock.Setup(x => x.DoSomething(123))
.Returns(new Task<Foo>(()=>retVal));
Run Code Online (Sandbox Code Playgroud)
这不是一个特别困难的转换,但是当我有数千个需要更新的测试时,这是乏味的.
我尝试使用一个名为ReturnsAsync的扩展方法来执行某些形式的m,但是我遇到了一些我无法确定的类型推理问题.是否有一种标准或更简单的方法来转换这种模拟以更好地处理异步方法?
所以我一直对这个感兴趣?运营商,但仍然无法使用它.当我做的事情时,我通常会想到:
var x = (someObject as someType).someMember;
Run Code Online (Sandbox Code Playgroud)
如果someObject有效且someMember为null,我可以这样做
var x = (someObject as someType).someMember ?? defaultValue;
Run Code Online (Sandbox Code Playgroud)
但是当someObject为null时,我几乎总是遇到问题,而且?? 并没有帮助我使这个更清洁,而不是自己做空检查.
你们找到了什么用途?在实际情况?
我有一个TableLayoutPanel,其中每个单元格包含一个面板.我希望能够按行和列直接访问任何一个单元格,并对其中的面板执行某些操作.我不能为我的生活弄清楚我是否可以访问单元格内的控件.如果我可以这样做会很棒:
Panel p = layoutPanel.Cell(x,y).Controls[0] as Panel;
p.dosomethingCool();
但我似乎无法获得这种访问权限,即使它似乎应该是非常可能的.
我正在使用同步apis和线程池的tcp服务器上看起来像这样:
TcpListener listener;
void Serve(){
while(true){
var client = listener.AcceptTcpClient();
ThreadPool.QueueUserWorkItem(this.HandleConnection, client);
//Or alternatively new Thread(HandleConnection).Start(client)
}
}
Run Code Online (Sandbox Code Playgroud)
假设我的目标是在资源使用率最低的情况下处理尽可能多的并发连接,这似乎很快就会受到可用线程数量的限制.我怀疑通过使用非阻塞任务apis,我将能够用更少的资源处理更多.
我最初的印象是这样的:
async Task Serve(){
while(true){
var client = await listener.AcceptTcpClientAsync();
HandleConnectionAsync(client); //fire and forget?
}
}
Run Code Online (Sandbox Code Playgroud)
但令我印象深刻的是,这可能会导致瓶颈.也许HandleConnectionAsync需要花费非常长的时间才能达到第一次等待,并且将阻止主接受循环继续进行.这只会使用一个线程,还是运行时会在多个线程上神奇地运行它看起来合适的东西?
有没有办法结合这两种方法,以便我的服务器将使用它所需的线程数量来确定正在运行的任务的数量,但是它不会在IO操作上不必要地阻塞线程?
在这样的情况下,是否存在最大化吞吐量的惯用方法?
我需要创建一个泛型类型,但我不知道编译时的类型.我想这样做:
Type t = typeof(whatever);
var list = new List<t>
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为t不是有效类型.但它确实知道一个有效的类型.有没有办法从System.Type中动态创建通用列表?我可能需要反思,那没关系,我只是有点迷失在这里.
我在窗口处理PreviewTextInput事件以处理来自磁卡读卡器的滑动.我在窗口上处理事件,因此无论哪个控件都集中在哪里都无关紧要.
一旦处理程序确定滑动已启动(输入'%'或';'字符),它将处理所有事件,直到滑动完成.该系统通常运行良好,但有一些重要的例外:
当从阅读器输入空格字符(可能还有\n字符)时,它们不会被PreviewTextInput处理,而是直接发送到任何聚焦的控件中.奇怪的是,处理程序确实接收\ r \n字符.这会导致不良行为.
我想要的是一种在窗口级别捕获所有关键事件的方法,并且如果我愿意,还有机会处理它们.我尝试过使用PreviewKeyDown,发现使用它有点麻烦,并从中获取char值.PreviewTextInput更好,因为我可以简单地读取Text属性.
是否有一个原因PreviewTextInput不处理某些字符?是否有任何类似的方法来获取所有事件,包括空格?
我有一个包含要完成的工作的切片,以及在完成所有操作时将包含结果的切片.以下是我的一般过程的草图:
var results = make([]Result, len(jobs))
wg := sync.WaitGroup{}
for i, job := range jobs {
wg.Add(1)
go func(i int, j job) {
defer wg.Done()
var r Result = doWork(j)
results[i] = r
}(i, job)
}
wg.Wait()
// Use results
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但我没有彻底测试,我不确定它是否安全.一般来说,让多个goroutine写入任何内容都不会让我感觉良好,但在这种情况下,每个goroutine都限制在切片中自己的索引,这是预先分配的.
我想替代方案是通过渠道收集结果,但由于结果顺序很重要,这似乎相当简单.以这种方式写入切片元素是否安全?
c# ×5
async-await ×2
activerecord ×1
android ×1
concurrency ×1
data-access ×1
events ×1
generics ×1
go ×1
goroutine ×1
keyboard ×1
label ×1
launcher ×1
math ×1
moq ×1
slice ×1
tcplistener ×1
threadpool ×1
titlebar ×1
winforms ×1
wpf ×1