小编Ric*_*ier的帖子

带有UIApplicationDelegate的假阳性respondsToSelector导致NSInvalidArgumentException

简而言之,下面的代码调用超类中的现有选择器,然后给出NSInvalidException:

- (void)applicationWillResignActive:(UIApplication *)application {
if ([super respondsToSelector:@selector(applicationWillResignActive:)])
{
    [super applicationWillResignActive:application];
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下日志异常:

  • ***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [aAppDelegate applicationDidEnterBackground:]:无法识别的选择器发送到实例0x5b5d360'

详细说明......我有一个基础应用程序委托(来自我们的新公司库)声明为:

我有一个基本的应用程序委托类,BaseAppDelegate.它被声明为:

@interface CoAppDelegate : NSObject <UIApplicationDelegate> 
Run Code Online (Sandbox Code Playgroud)

它实现:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    DebugLog(@"*** ACTIVE ****");
}
Run Code Online (Sandbox Code Playgroud)

它没有实现@selector(applicationWillResignActive :) - 或者至少我的意思是我没有专门为该方法编写代码.它无法在.h或.m文件中找到.

我的应用程序有一个应用程序委托,它继承自CoAppDelegate:

@interface aAppDelegate : CoAppDelegate <UIApplicationDelegate>
Run Code Online (Sandbox Code Playgroud)

我实现上述两种方法:

- (void)applicationWillResignActive:(UIApplication *)application {
    if ([super respondsToSelector:@selector(applicationWillResignActive:)])
    {
        [super applicationWillResignActive:application];
    }
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    if ([super respondsToSelector:@selector(applicationDidBecomeActive:)])
    {   
        [super applicationDidBecomeActive:application];
    }
}
Run Code Online (Sandbox Code Playgroud)

当应用程序启动时,我得到调试输出"***ACTIVE****" - 应该如此.

当我将我的应用程序发送到后台时,我得到NSInvalidArgumentException,指出响应者不存在 - 并且它不存在,所以这是抛出的正确异常.

我需要知道的是为什么当我期待看到NO时,responseToSelector会给出YES?我错过了什么微妙的东西?

iphone objective-c uiapplicationdelegate

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

颠覆性错误:"<file> ...在该修订版中不存在"

我已经开始在AWS上设置一个新的SVN repo,并且在使用Eclipse 3.6 Subversive 2.2.2时遇到了麻烦.

更新:新的repo使用Bitnami堆栈与Subversion 1.7.

我的Eclipse 3.5 Subclipse 1.6.2安装没有问题.

Eclipse 3.6 Subversive 2.2.2中,如果我尝试打开任何子文件夹,Subversive会给我错误:

获取存储库文件夹子操作失败.

svn:该版本中不存在URL'svn://xxx-xxx-xxx-xxx-xx.compute-1.amazonaws.com/M1'

任何读取文件的尝试都会给我一个类似的错误(该版本中不存在xxx).

似乎每个提交的元数据都可用,但实际文件本身无法找到/读取.


更新:

  • 我可以使用Subversive查看所有提交的历史记录,但无法查看实际文件.
  • repo与其他SVN客户端完美配合,如Subclipse,X-Code的客户端,SVNX.
  • 问题在于目前缺乏对Subversive的SVN 1.7支持(2012年2月)

答案(解释):

ScubaZA向我指出了正确的方向 - 新的回购使用Subversion 1.7,Subversive不支持(截至2012年2月).Subversive使用SVNKit连接器.其他SVN客户端已经支持1.7.

这些相关问题的信息有助于:

subclipse svn subversive

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

动态更改Android首选项的widgetlayout资源

我在首选项屏幕中创建了一个首选项,如下所示:

<PreferenceScreen>
    <Preference
        android:title="title"
        android:key="key"
        android:widgetLayout="@layout/someview"/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

在这里,我设置了一个widgetlayout资源,该资源应显示在首选项的右侧(如复选框首选项的复选框).我也可以在我的代码中设置这个资源PreferenceActivity.onCreate():

Preference myPreference = findPreference("key");
myPreference.setWidgetLayoutResource(R.layout.someview);
Run Code Online (Sandbox Code Playgroud)

这两种方法都可以正常工作,因此我可以在首选项的右侧看到我的资源.但是,我无法访问此资源(someview)以在运行时更改其属性.

既没有手动设置资源ID,也没有从资源中膨胀或findViewById似乎工作 - 我找不到资源/资源ID无效的异常.似乎偏好活动稍后会使资源膨胀.

有没有人遇到同样的问题?有关如何widgetlayout在运行时更改资源属性的任何想法?

这是一个类似的问题,但没有回答

android preferenceactivity android-preferences

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

共享元素活动转换动画中的Z顺序

我正在做一些基本的共享元素活动过渡动画,代码类似于:

Intent i = new Intent(AnActivity.this, AnotherActivity.class);
ActivityOptionsCompat options =
        ActivityOptionsCompat.makeSceneTransitionAnimation(this,
                Pair.create(vBackground, "background"),
                Pair.create(vImage, "image"),
                Pair.create(vName, "name"),
                Pair.create(vDistance, "distance")
        );
startActivity(i, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

我可以更改动画分配给视图的Z顺序吗?

原因是一些视图在动画期间被其他视图隐藏,即使在两种活动布局中都不是这种情况.在转换代码的某处,视图的Z顺序会发生变化.

我尝试重新排序Pair.create(...),但没有取得很大的成功.

android shared-element-transition

7
推荐指数
0
解决办法
644
查看次数

Volley Content-Type标头未更新

我正在尝试在Volley中编写POST调用,以将XML正文发送到服务器.我无法Content-Type正确设置标题.

基本StringRequest看起来像这样:

StringRequest folderRequest =
        new StringRequest(Method.POST, submitInterviewUrl, myListener, myErrorListener)
    {
        @Override
        public byte[] getBody() throws AuthFailureError
        {
            String body = "some text";
            try
            {
                return body.getBytes(getParamsEncoding());
            }
            catch (UnsupportedEncodingException uee)
            {
                throw new RuntimeException("Encoding not supported: "
                        + getParamsEncoding(), uee);
            }
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError
        {
            Map<String, String> headers = new HashMap<String, String>();
            headers.put("Content-Type", "application/xml");
            return headers;
        }
    };
Run Code Online (Sandbox Code Playgroud)

我重写getHeaders()以提供Content-Type我想要的标题 - application/xml.

这是基于与此类似的建议问题:

android android-volley

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

React Native Android自定义视图中的“冒泡”与“直接”事件

React Native Android自定义视图能够在ViewManager子类中以两种不同的方式声明事件:

  • 通过“冒泡”事件 getExportedCustomBubblingEventTypeConstants()
  • 通过“直接”事件 getExportedCustomDirectEventTypeConstants()

这两种类型的事件有什么区别?

如果我尝试从Android自定义视图onClick(View v)方法发送事件直至其视图的JS表示形式,我将使用以下哪个方法来声明我的自定义事件名称?


后续行动:我最终使用“直接”事件将来自Android视图的点击发送回我的JS组件。这很好,但是我仍然想知道“冒泡”事件的全部含义。

android react-native

6
推荐指数
1
解决办法
750
查看次数

以编程方式记录SSL证书

我有两个无法连接到我的TLS v1.2端点的设备.所有其他人似乎都能够,包括浏览器,PostMan和iOS设备.

这些设备运行的是Android 5和7(因此TLS v1.2支持应该没有问题).

注意:这不是自签名证书.它由亚马逊签署.

直接的想法是:

  1. Android碎片 - 也许设备(一个是Kindle Fire 7)不包括正确的证书进入操作系统.这可能不是设备制造商第一次做出破坏功能的奇怪决定.

  2. API正在通过代理进行访问,实际上一个正在检测的Man-In-The-Middle.


修复(1)意味着捆绑我们的证书,并在我们的证书到期时导致通常的问题.

我希望让用户安装一个调试版本,确认(1)或(2)是否是问题.这样的构建将检查服务器/代理提供的SSL证书,并将其记录回给我.


网站框架:

  • 改造v2.3.0
  • OkHttp v3.9.1

题:

如何检查设备在访问端点时看到的SSL证书信息?


来自@SangeetSuresh的每条评论更新:

事实证明,有两种不同的例外被抛出.

Kindle Fire 7"平板电脑(KFAUWI,OS 5.1.1)正在抛弃我已经开始调查的问题,这个问题应该集中在这个问题上,即基本的SSL故障.

java.security.cert.CertPathValidatorException: 
    Trust anchor for certification path not found.
       at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:331)
       at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:232)
       at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:114)
Run Code Online (Sandbox Code Playgroud)

LG设备(LG-SP200,OS 7.1.2)正在通过对等方关闭连接,如果在此处未解决,则应在新问题下解决:

javax.net.ssl.SSLHandshakeException: 
    Connection closed by peer
       at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(NativeCrypto.java)
       at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:360)
       at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:299)
Run Code Online (Sandbox Code Playgroud)

android ssl-certificate

6
推荐指数
1
解决办法
391
查看次数

如何避免频繁的位置更新?

我是android的新手.我希望以3分钟的间隔获得GPS位置,但我每秒都会获得位置更新.

我怎么能避免这个?

请提出建议.我正在使用以下代码:

captureFrequencey=3*60*1000;    
LocationMngr.requestLocationUpdates(
    LocationManager.GPS_PROVIDER, captureFrequencey, 0, this);
Run Code Online (Sandbox Code Playgroud)

gps android

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

设置单行android通知(仅标题)

我想在通知抽屉中为我的应用程序设置通知,但只有一个标题(没有正文),这意味着 - 只有一行通知,应该与应用程序图标垂直对齐.

例如,在下面的通知中,我只想保持"Ringer shushed'tr1 19:16"标题,使用相同的字体大小,但垂直居中于左侧的应用程序图标.

在此输入图像描述

这是我创建通知的代码:

NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
                new Intent(context, MainActivity.class), PendingIntent.FLAG_CANCEL_CURRENT);

PendingIntent deleteIntent = PendingIntent.getService(context, 0,
                new Intent(context, GCMIntentService.class)
                        .setAction(IntentConsts.ACTION_CLEAR_MESSAGE_COUNT), PendingIntent.FLAG_CANCEL_CURRENT);

manager.notify(MMConfig.NTF_ID_GCM, new NotificationCompat.Builder(context)
                .setSmallIcon(R.drawable.push_icon)
                .setContentTitle("My title")
                .setWhen(System.currentTimeMillis())
                .setAutoCancel(true)
                .setContentIntent(contentIntent)
                .setDeleteIntent(deleteIntent)
                .build());
Run Code Online (Sandbox Code Playgroud)

现在我成功创建了仅包含标题的通知,但我似乎无法使其与应用程序图标垂直居中.有任何想法吗?

android vertical-alignment android-notifications

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

从Google API获得单独的地址字段?

鉴于其特定的ID,Google Places API可以返回有关特定位置的详细信息:

Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
Run Code Online (Sandbox Code Playgroud)

回调中返回的数据实现Place接口,使用以下方法以逗号分隔的字符串形式访问地址:

Place.getAddress()
Run Code Online (Sandbox Code Playgroud)

将该字符串解析为街道,郊区,省,镇等的字段是不可靠的,因为字符串格式不一致:

  • Ranelagh Rd,开普敦,南非(街道,郊区,国家)
  • 1st Ave,Kenilworth,开普敦,7708,南非(街道,郊区,城镇,邮政编码,国家)
  • 美国佛罗里达州33991,开普科勒尔SW 23rd Terrace (街道,城镇,邮政编码,国家/地区)

是否有可靠的方法可以从Google获取解析的地址信息?

android google-maps-api-3 google-places-api google-places

5
推荐指数
0
解决办法
945
查看次数