我正在将一些东西从Java移植到C#.在Java中hashcode,a ArrayList取决于其中的项目.在C#中,我总是从List... 获得相同的哈希码
为什么是这样?
对于我的一些对象,哈希码需要不同,因为列表属性中的对象使对象不相等.我希望哈希码对于对象的状态始终是唯一的,并且当对象相等时仅等于另一个哈希码.我错了吗?
我正在创建一个appwidget,它由一个名为Foo的自定义视图组成.
XML/widget.xml:
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="0"
android:initialLayout="@layout/widget_layout">
</appwidget-provider>
Run Code Online (Sandbox Code Playgroud)
布局/ widget_layout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<package.name.Foo
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
富:
public class Foo extends View
{..}
Run Code Online (Sandbox Code Playgroud)
我Foo在一个普通的Android应用程序中测试了视图,它运行得很好.但是,当我尝试运行小部件时,我得到了"error while loading widget".当我Foo从小部件中删除视图时,一切都很好.所以它与Foo视图有关.
不幸的是,我无法在DDMS中获得任何更具体的错误,因为我不知道调试小部件的方法.
我想知道是否确实可以在app-widget中使用您自己的自定义视图?我在这里做错了吗?
我有一个以编程方式注册的广播接收器.它响应了PACKAGE_REMOVED一个包被删除时触发的意图.
问题是,它没有得到这个消息.我认为这是因为当我离开活动并转移到另一个活动以卸载应用程序时,意图被触发,因此原始活动暂停.可能暂停活动(接收器未注册onPause)也会暂停接收器吗?
我有一个自定义视图,填满了我的整个屏幕.(钢琴键盘)当用户触摸该键时,它将invalidate()被调用并且整个键盘被重新绘制以用触摸的键显示新状态.
目前视图非常简单,但我计划添加更多漂亮的图形.由于整个键盘是动态渲染的,这将使重绘整个键盘更加昂贵.
所以我想,让我们看看部分重绘.现在我打电话invalidate(Rect dirty)给正确的脏区.onDraw(Canvas canvas)如果我确实想要部分重绘,我将我的方法设置为仅在脏区域中绘制键.这会导致绘制这些键,但键盘的其余部分完全是黑色/根本不绘制.
我错误地期望调用invalidate(Rect dirty)会"缓存"当前canvas,并且只允许在脏区域中"绘制"绘图吗?
有什么方法可以实现我想要的吗?(一种"缓存"画布并仅重绘脏区的方法?"
我想只为英语用户显示一个按钮,有没有办法检测语言设置?
我知道如何获得当前Locale,但我不知道如果比较它Locale.English是足够的,因为必须有很多英语变体等.
有人这样经历过吗?
我成功地将proguard用于我的Android应用程序.
但是,有一个应用程序我遇到了麻烦.
此应用程序使用一个java库,该库具有.xml存储在包中的文件.
InputStream istream = Library.class.getResourceAsStream("resource.xml");
Run Code Online (Sandbox Code Playgroud)
禁用proguard时,此库非常有用.但是,运行proguard,似乎xml文件完全被剥离了.
相关proguard.cfg
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
#-dontobfuscate
#-repackageclasses '' //THIS IS DISABLED
-keepattributes *Annotation*
-keepattributes Signature
-verbose
-dontwarn roboguice.activity.RoboMapActivity
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
Run Code Online (Sandbox Code Playgroud)
有关如何强制保留此xml文件的任何想法?
我以为我明白了Intersect,但事实证明我错了.
List<int> list1 = new List<int>() { 1, 2, 3, 2, 3};
List<int> list2 = new List<int>() { 2, 3, 4, 3, 4};
list1.Intersect(list2) => 2,3
//But what I want is:
// => 2,3,2,3,2,3,3
Run Code Online (Sandbox Code Playgroud)
我可以想办法:
var intersected = list1.Intersect(list2);
var list3 = new List<int>();
list3.AddRange(list1.Where(I => intersected.Contains(I)));
list3.AddRange(list2.Where(I => intersected.Contains(I)));
Run Code Online (Sandbox Code Playgroud)
在LINQ中有更简单的方法来实现这一目标吗?
我需要说明我不关心结果的顺序.
2,2,2,3,3,3,3也可以.
问题是我在一个非常大的集合中使用它,所以我需要效率.
我们谈论的是对象,而不是整体.这些仅仅是为了简单的例子,但我意识到这可以有所作为.
我想知道是否有可能从我自己没有创建的PendingIntent中获取更多信息.更确切地说:是否有可能以某种方式检索原始Intent的PendingIntent?我不需要执行它,但想打印它的内容.
查看PendingIntent它的代码显示了一个隐藏的方法:
/** @hide */
public IIntentSender getTarget() {
return mTarget;
}
Run Code Online (Sandbox Code Playgroud)
然而,这IIntentSender也是隐藏的,与BinderIPC(我猜)相关的东西有关.不那么容易.有任何想法吗?
我有一个NSArray的Foo对象.
@interface Foo : NSObject
{
}
- (NSString *) name;
@end
Run Code Online (Sandbox Code Playgroud)
我希望能够将所有这些[Foo name]结果合二为一NSString.
在C#中,我将使用LINQ获取这些数组,创建一个数组,然后将其提供给String.Join():
List<Foo> foo = [..];
String.Join(",", foo.select(F => F.name()).ToArray());
Run Code Online (Sandbox Code Playgroud)
在Objective-C中是否可以这样?
我知道[NSArray componentsJoinedByString],但是如何[Foo name]在不手动循环其内容的情况下轻松选择所有对象的属性?
我有一个Android的吉他图应用程序,我移植到iOS.Android有一个嵌入式midi合成器(sonivox),因此我可以生成midi文件并让Android处理播放.
有没有办法在iOS上这样做?或者iOS是否有非常轻量级的嵌入式合成器?
android ×6
c# ×2
java ×2
arrays ×1
collections ×1
drawing ×1
gethashcode ×1
hashcode ×1
intersection ×1
invalidation ×1
iphone ×1
join ×1
linq ×1
locale ×1
midi ×1
objective-c ×1
onpause ×1
partial ×1
proguard ×1
string ×1
synthesizer ×1