小编Har*_*san的帖子

在android中定义按钮事件的最佳实践

我有一个LayoutXML定义,由几个Buttons 组成.

目前我在OnCreate方法中这样做,以针对按钮定义事件处理程序:

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button newPicButton = (Button)findViewById(R.id.new_button);
    newPicButton.setOnClickListener(btnListener);
    ..... similarly for other buttons too
    .....
}
Run Code Online (Sandbox Code Playgroud)

里面的ButtononClick情况下,我启动相机Intent获取的图片,里面onActivityResult的回调,我再次设置沿设定的事件处理程序View是这样的:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    setContentView(R.layout.main);
    Button newPicButton = (Button)findViewById(R.id.new_button);
    newPicButton.setOnClickListener(btnListener);
    ...similarly for other buttons too
}
Run Code Online (Sandbox Code Playgroud)

我是android新手,这种每次重新定义事件的方法对我来说都很脏.我想知道在这样的场景中定义按钮事件处理程序方面的最佳实践是什么.

编辑:粘贴我的完整课程

public class CameraAppActivity extends Activity 
{
    /** Called when the activity is first created. */

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android button event-handling

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

是否可以在Android库项目中获取应用程序的上下文?

我想获得在我的库项目的一个类中运行时引用/托管我的库的应用程序的上下文.可能吗?如果有,怎么样?

谢谢

更新 我不希望我的用户将参数中的上下文传递给我的库项目,因为我的库项目可能会通过JNI调用,我不知道如何在JNI中获取上下文并将其传递给Java层.

android android-context android-library

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

如何检查Windows应用商店应用中是否存在文件?

有没有其他方法可以检查Windows应用商店应用中是否存在文件?

try
{
    var file = await ApplicationData.Current.LocalFolder.GetFileAsync("Test.xml");
    //no exception means file exists
}
catch (FileNotFoundException ex)
{ 
    //find out through exception 
}
Run Code Online (Sandbox Code Playgroud)

c# filenotfoundexception microsoft-metro windows-8 windows-runtime

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

如何在ASP.NET Web API中处理分层路由?

目前我有两个控制器

1 - 家长控制器

2 - 儿童控制器

我像这样访问我的父控制器

someurl\parentcontroller
Run Code Online (Sandbox Code Playgroud)

现在我想像这样访问我的孩子控制器

someurl\parentcontroller\1\childcontroller
Run Code Online (Sandbox Code Playgroud)

最后一个网址应该返回特定父级的所有子级.

我目前在global.asax文件中有这条路线

routes.MapHttpRoute ("Route1", "{controller}/{id}", new { id = RouteParameter.Optional });

我不确定如何实现我的parent\id\child层次结构..我应该如何配置我的路由来实现这一目标?想法?

restful-url c#-4.0 asp.net-mvc-4 asp.net-web-api

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

如何在代码中设置控制模板?

我在XAML中有这个

<ControlTemplate TargetType="{x:Type Button}">
    <Image ...>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

我希望在C#代码中实现相同的功能.我怎样才能做到这一点?

ControlTemplate ct = new ControlTemplate();..
Image img = new Image();..
Run Code Online (Sandbox Code Playgroud)

现在如何将此图像分配给控制模板?我们能做到这一点还是我错过了这里的概念?

c# wpf xaml contentcontrol

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

相当于C#的是C++/CLI中的运算符

可能重复:
C++/CLI-问题:是否存在与C#"is"关键字相同的或者我是否必须使用反射?

在C++/CLI环境中,C#isas运算符不可用.在C++/CLI 中is,我应该用什么代替as

找不到重复,请告诉我是否存在重复.

c# c++-cli

13
推荐指数
0
解决办法
7689
查看次数

通过JNI将float [] []传递给C++的最简单方法

在我的Java代码中,我有一个2D浮点数组float[x][4] floatArray.这x可以在1到25之间.我必须将此2D浮点数组传递给C++方法via JNI.我的JNI方法是

jboolean MyJNIMethod(JNIEnv * env, jobject obj, jobjectArray myArray)
{
    //how to convert this myArray to something that can be safely passed to C++ method below
}
Run Code Online (Sandbox Code Playgroud)

在内部MyJNIMethod我必须调用一个C++方法并将从Java获取的2D float数组传递给此方法

bool MyCplusPlusMethod(float coordinates[][4])
    {

    }
Run Code Online (Sandbox Code Playgroud)

由于缺乏原生开发知识,我很难将jobject正确地转换为float [] [].有人能告诉我最简单,最安全的方法吗?谢谢

c++ java java-native-interface

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

新的总是在C++/C#/ Java中分配在堆上

无论使用C++或C#还是Java,我的理解始终是当我们使用new关键字创建对象时,它会在堆上分配内存.我认为new只需要引用类型(类),并且原始类型(int,bool,float等)永远不会使用new并且总是在堆栈上(除非它们是实例化的类的成员变量)与new).不过,我一直在阅读信息,这让我怀疑这个长期存在的假设,至少对于Java和C#.

例如,我刚注意到在C#中,new运算符可用于初始化值类型,请参见此处.这是规则的一个例外,该语言的辅助功能,如果是,那么还会有哪些其他例外?

有人可以澄清一下吗?

c# c++ java memory memory-management

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

提高分割文件的速度

我正在使用此代码从文件中提取块

// info is FileInfo object pointing to file
var percentSplit = info.Length * 50 / 100; // extract 50% of file
var bytes = new byte[percentSplit];
var fileStream = File.OpenRead(fileName);
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Dispose();
File.WriteAllBytes(splitName, bytes);
Run Code Online (Sandbox Code Playgroud)

有没有办法加快这个过程?

目前,对于530 MB的文件,它需要大约4 - 5秒.这次可以改善吗?

c# filestream file-copying

11
推荐指数
1
解决办法
498
查看次数

为什么e.Handled = true不起作用?

我跟随XAML

 <StackPanel MouseEnter="StackPanel_MouseEnter" Height="130" Background="Blue">
    <Grid MouseEnter="Grid_MouseEnter" Height="60" Background="Red" >
       <Button MouseEnter="Button_MouseEnter" Height="20"/>
    </Grid>
 </StackPanel>
Run Code Online (Sandbox Code Playgroud)

在代码背后,我正在这样做

private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
{

}

private void Grid_MouseEnter(object sender, MouseEventArgs e)
{
    e.Handled = true;
}

private void Button_MouseEnter(object sender, MouseEventArgs e)
{   
    e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

现在,即使我将鼠标移动Button并设置e.Handled = true,GridStackPanel分别调用和调用事件.为什么?我应该怎么做才能阻止路由事件冒泡?

c# wpf routed-events

10
推荐指数
1
解决办法
8306
查看次数