【问题标题】:android, Method invoke problem when getting resultandroid,获取结果时方法调用问题
【发布时间】:2010-08-31 17:17:43
【问题描述】:

我尝试使用反射来调用“List Camera.Parameters.getSupportedFocusModes()”函数,代码如下:

Camera.Parameters params = mCamera.getParameters();
Method method = params.getClass().getDeclaredMethod("getSupportedFocusModes", (Class[]) null);
Object o = method.invoke(params, (Object[]) null);

日志显示它确实找到了函数,但是结果 o 始终为空,这是为什么呢?请帮帮我!

【问题讨论】:

    标签: android methods


    【解决方案1】:

    对我来说很好用。返回[auto, infinity]

    确保您正在测试的设备使用 API 级别 5 或更高版本,并且 <uses-permission android:name="android.permission.CAMERA" /> 已添加到 AndroidManifest.xml。

    这是我使用的代码。

    Camera camera = Camera.open();
    Camera.Parameters params = camera.getParameters();
    try
    {
        Method method = params.getClass().getDeclaredMethod("getSupportedFocusModes", (Class[]) null);
        Object o = method.invoke(params, (Object[]) null);
        Log.i("Camera Test", o.toString());
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    

    【讨论】:

    • 感谢您的回答。您使用的上述代码仍然没有返回我的愿望。然而,令人惊讶的是, Object o = method.invoke(params) 起作用了。知道为什么吗? >.
    • 我认为 Object o = method.invoke(params) 是调用不带参数的方法的正确方法。不知道为什么另一种方式对我有用,而不对你有用。
    【解决方案2】:

    尝试使用“getMethod
    以下是使用相同的示例。

    Method method = this.getFirstActivity().getClass().getMethod("didReceive", null); 
    method.invoke(this.getFirstActivity().getClass().newInstance(), null);
    

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多