小编Jim*_*y D的帖子

方向更改时不要重新加载应用程序

旋转屏幕时,我根本不需要改变任何东西.我的应用程序显示时,第一次加载和旋转设备应随机图像选择另一随机图像.我怎样(简单地)让这种行为停止?

android

152
推荐指数
7
解决办法
13万
查看次数

如何捕获按钮上的单击事件?

.NET Developer刚刚开始使用Eclipse和Android.

有人可以用最简单的方式向我展示,使用绝对最少的代码行,单击按钮时如何做某事?

我的按钮有id button1,我只想看看在哪里/如何编写onClick()处理程序.

所以,让我说我已经imageview1设定为隐形了.单击按钮时如何使其可见?

编辑:

谢谢大家,但由于没有一个示例适合我,我会尝试这样做:有人可以发布完整的代码来完成这项工作吗?不仅仅是方法,因为当我尝试使用你的任何方法时,我会在整个地方出现错误,所以显然缺少其他东西.从所有进口开始,我需要看到一切.

android

33
推荐指数
4
解决办法
12万
查看次数

揭开嵌入式资源的混乱局面

编辑:阅读Tim Schmelter的答案1,然后使用此问题获取如何嵌入资源并在运行时访问它们的示例.

嵌入式资源的主题出现了很多,尤其是当人们询问如何在运行时访问嵌入式文件时.事情变得更加混乱,因为Visual Studio为您提供了两种不同的嵌入资源的方式,以及在运行时访问这些资源的不同方式.问题是,根据您用于嵌入资源的方法,您尝试在运行时用于访问文件的方法可能不起作用.这篇文章试图消除我在那里看到的所有混乱,但我也有一个问题似乎没有人能够回答事实:为什么我编译的程序的大小是嵌入式资源的大小(有时)?例如,如果我将20MB文件嵌入到我的项目中,为什么我的程序编译为40MB?我过去曾问过这个问题,没有人能够重现我的结果.我发现它们无法重现的原因是因为它们以不同的方式嵌入文件.看这里:

方法1:

双击"我的项目"以打开属性页面,然后转到"资源"选项卡.现在单击添加资源>添加现有文件.浏览到要嵌入的文件.对于这个例子,我使用的是可执行文件.您现在将在"资源"选项卡上看到您的文件:

在此输入图像描述

您还将看到在项目下创建了名为Resources的文件夹,并且嵌入的文件已放置在此文件夹中:

在此输入图像描述

编辑:这个下一步是问题所在.当您通过资源标签添加文件时,您应该将嵌入式资源的构建操作设置为"TABNNS".反直觉至少可以说!

现在选择文件,查看文件的属性窗口并将构建操作更改为嵌入式资源:( 仅当通过方法2添加文件时才应执行此步骤).

在此输入图像描述

现在编译你的程序.您将看到已编译程序的大小至少是嵌入式资源大小的两倍.方法2不会发生这种情况.请参见此处:

方法2:

右键单击项目名称,然后选择"添加">"现有项".浏览到您的文件,这次您会注意到,当它确实放在您的项目下时,没有创建Resources文件夹:

在此输入图像描述

现在再次选择文件并将Build Action更改为Embedded Resource并进行编译.这次编译程序的大小将与您预期的一样 - 大约是嵌入文件的大小,而不是方法1的大小的两倍.

用于嵌入文件的方法将决定在运行时可以使用哪种方法来访问文件.对于方法1,这非常简单,您所要做的就是:

My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.ResourceName, Append)
Run Code Online (Sandbox Code Playgroud)

其中Path是要保存在硬盘上的文件的位置和名称,ResourceName是您在项目窗口中看到的嵌入资源的名称(减去任何扩展名),Append是否要创建新文件或覆盖现有文件.因此,例如,使用上面图像中的test.exe,我可以将该文件保存到C盘,如下所示:

My.Computer.FileSystem.WriteAllBytes(“C:\test.exe”, My.Resources.test, False)
Run Code Online (Sandbox Code Playgroud)

不可能更容易.

但是,方法2似乎不允许您访问My.Resources,因此它会变得更复杂一些.您必须创建一个Stream来保存资源,将流放入一个字节数组,然后将字节写入文件系统.我发现这样做最简单的方法是这样的:

Using s As Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(Project.ResourceName)
Dim bytes(s.Length) As Byte
s.Read(bytes, 0, bytes.Length)
File.WriteAllBytes(OutputFile, bytes)
End Using
Run Code Online (Sandbox Code Playgroud)

使用此方法,ResourceName必须包含文件扩展名AND项目名称,因此使用上面的示例我们可以这样做:

Using s As Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(WindowsApplication1.test.exe)
Dim bytes(s.Length) As Byte
s.Read(bytes, 0, bytes.Length)
File.WriteAllBytes(“C:\test.exe”, bytes)
End Using
Run Code Online (Sandbox Code Playgroud)

基于文本的文件有点不同:

Dim output As String
Using sr As StreamReader = New StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(WindowsApplication1.test.txt))
output = …
Run Code Online (Sandbox Code Playgroud)

vb.net embedded-resource visual-studio

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

Android - 屏幕方向重新加载活动

我要重新提出这个问题,因为那里有很多不好的信息,真的很令人沮丧.简短的故事是,当设备方向改变时,我不希望任何改变或发生.给这个问题最流行的两个"解决方案"是:

1.您可以通过在清单中添加android:screenOrientation ="portrait"(或"landscape")来锁定活动的一个方向.

2.您可以通过在标记中指定android:configChanges ="screenOrientation"来告诉系统您打算自己处理屏幕更改.这样就不会重新创建活动,而是会收到一个回调(你可以忽略它,因为它对你没用).

这些工作都没有.让我更详细地解释一下我的特殊问题......

我正在尝试一个非常简单的应用程序作为学习练习.我在服务器上有一个文本文件.文本文件中有1个内容:单行上的单个整数.此数字是也存储在此服务器上的图像文件数,图像全部命名为0.jpg,1.jpg,2.jpg等.

我的所有代码都在我的活动的onCreate方法中(就像我说它是一个简单的应用程序).

应用程序在运行时执行以下操作:

从文本文件中读取数字.生成从零到文件中的数字的随机数.通过使用URL中的随机数将随机图像加载到imageview中.

当屏幕旋转时,我不希望所有这一切再次发生.我只是希望没有发生......除了屏幕应该明显地旋转并且图像应该缩放以适应它所做的.但每次屏幕旋转时,所有代码都会运行并且会选择一个新的随机图像.有人可以给我一个简单的解决方案与工作代码来解决这个问题吗?我通过观察来学习,如果你不能提供代码示例它不会帮助.

提前致谢.

ps ...我不是在寻找一种不同的方式来做我正在做的事情,这不是重点.即时通讯寻找FIX我目前正在做的方式.

android

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

如何将Stream写入文件?

我的应用程序中有一个嵌入式DLL,我需要在运行时将其写入文件系统.到目前为止我有这个:

Dim _assembly As Assembly = Assembly.GetExecutingAssembly()
Dim _rawstream As Stream = _assembly.GetManifestResourceStream("MyFile.dll")
Run Code Online (Sandbox Code Playgroud)

我现在只需要将_rawstream写入文件.

编辑:这必须是.NET Framework 2和CopyTo不存在:(

vb.net stream .net-2.0

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

使用对DataTable所做的更改来更新数据库...混淆

如果我用DataTable填充DataTable,DataAdapter.Fill(DataTable);然后用这样简单的东西对DataTable中的行进行更改:DataTable.Rows[0]["Name"] = "New Name";如何轻松地将这些更改保存回数据库?我以为我可以打电话DataAdapter.Update(DataTable);但我读过它只适用于TableAdapter(?).

c# datatable dataadapter

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

更改Excel Web Query的URL

我有一个Excel 2010电子表格,可以从数据连接中获取信息.在连接的属性上是"连接字符串",它是一个带有几个参数的URL,这些参数在查询字符串中传递给服务器.如果单击"编辑查询",则可以更改URL,然后根据新URL导入新数据.我需要通过VBA来做到这一点.

假设连接字符串目前http://myserver.com?name=foo 我需要将其更改为http://myserver.com?name=bar

如何才能做到这一点?

excel vba excel-vba

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

列出对象成员和值

我有一个第三方对象传递给我的一个方法.该对象包含20个左右的字符串成员.如何轻松列出所有字符串名称及其值?

vb.net

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

Android 4.0 4G切换

这是针对三星Galaxy Nexus的Verizon LTE版本.

我的任务是编写一个能够有效禁用/启用4G功能的小应用程序.这可以通过手动完成settings > mobile network > network mode并选择LTE/CDMA(4g启用)或CDMA(仅3g).

我还没有尝试任何东西,因为Android开发不是我的强项.我正在寻找指导...示例,代码示例等我假设这应该是一个单行,但我的经验是,使用Android开发没有什么是它看起来那么简单.

任何帮助将不胜感激.

android 4g

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

VB.NET读取注册表

这一次超越困惑......

最简单的代码行有时会工作,有时则不然.首先我认为问题是我试图读取DWORD的值,但是因为我可以从SOME键读取DWORD值,所以这不是问题.现在问题似乎是,如果密钥在名称中有空格,我无法从任何密钥读取.当然这不可能.我拒绝相信MS没有考虑注册表密钥路径和名称中的空格.

那么告诉我为什么这不起作用:

MsgBox(My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\CA\CA ARCserve D2D\WebService", "Port", Nothing))
Run Code Online (Sandbox Code Playgroud)

它只是弹出一个空盒子.是的,注册表中确实存在一个值,是的,我有权读取密钥.

编辑:是的,一遍又一遍,似乎你无法从注册表中读取密钥名称中是否有空格.真的吗?!?

编辑再次:"Ramhound"说代码示例是愚蠢的.引人入胜的观点.但他自己的建议也失败了:

Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\ATI Technologies\CBT")

Dim objValue As Object

objValue = key.GetValue("ReleaseVersion")

MSGBOX(objValue.ToString())

vb.net registry

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