class A { ... };
A& getA();
A anA = getA();
Run Code Online (Sandbox Code Playgroud)
第3行究竟发生了什么?
A的复制构造函数是否被调用,从而创建一个独立于函数返回(通过引用)的对象?
我需要在每次单击时更改切换按钮的图像.
这样做有效吗?
public void onClickToggleButton(View v) {
if(_on) {
_on=false;
myImageView.setImageDrawable(getResources().getDrawable(R.drawable.btn_off));
} else {
_on=true;
myImageView.setImageDrawable(getResources().getDrawable(R.drawable.btn_on));
}
}
Run Code Online (Sandbox Code Playgroud)
或者它是否意味着Drawable每次都会从PNG文件解码?
在这种情况下,getDrawable()只调用两次(in onCreate())并保持我自己对2 Drawables 的引用会更好.
该无线连接亚行的工作我的Android手机11 + Windows工作站上的罚款。
但这并不方便,因为每次手机 Wifi 断开/重新连接时,我都必须:
adb connect 192.168.1.10:XXXXX在电脑上运行。有没有办法跳过第 2 步:
我创建了一个非常基本的Objective-C类.
MyClass.h
@interface MyClass: NSObject
@end
Run Code Online (Sandbox Code Playgroud)
MyClass.m
#import "MyClass.h"
@interface MyClass()
@end
@implementation MyClass: NSObject {
NSMutableArray* _myArray;
}
@end
Run Code Online (Sandbox Code Playgroud)
Xcode在线上显示以下警告@implementation:
类实现可能没有超类
如果我删除该NSMutableArray* _myArray;行,警告就会消失.
这个警告意味着什么?我究竟做错了什么?
我使用的几个第三方.jar库正在抛出数千个像这样的Lint警告:
Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.inneractive.api.ads.sdk.IAmraidWebView$a) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it is *not* an inner class. …Run Code Online (Sandbox Code Playgroud) 这是我试图了解Android Content Provider权限的测试:
App ProviderApp清单:
<provider
android:authorities="com.mycompany.myProviderApp"
android:name="com.mycompany.myProviderApp.ContentProviderForMyOtherApps"
android:exported="true"/>
Run Code Online (Sandbox Code Playgroud)
我还使用在ProviderApp中返回字符串的基本方法实现了一个dummy ContentProvider(ContentProviderForMyOtherApps):query
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
String[] cols = {"column1"};
MatrixCursor cursor = new MatrixCursor(cols);
MatrixCursor.RowBuilder builder = cursor.newRow();
builder.add("HELLO!");
return cursor;
}
Run Code Online (Sandbox Code Playgroud)
App ClientApp代码:
Cursor cursor = getContentResolver().query(Uri.parse("content://com.mycompany.myProviderApp"),null,null,null,null);
cursor.moveToFirst();
Log.d(TAG, cursor.getString(0)); // output: HELLO!
Run Code Online (Sandbox Code Playgroud)
好的,所以一切正常,ClientApp成功访问提供程序.
但根据以下摘录,我对文档的理解是ClientApp应该被拒绝访问提供者,因为:
android:readPermission内provider(如com.mycompany.myProviderApp.READ)uses-permission …我的应用程序有minSDKVersion 16.
我已按照文档添加了以下几行到我的 build.gradle 中,以便使用一些“Java 8 语言 API,而不需要最低 API 级别”:
\nandroid {\n compileOptions {\n coreLibraryDesugaringEnabled true\n }\n}\n\ndependencies {\n coreLibraryDesugaring \'com.android.tools:desugar_jdk_libs:1.1.5\'\n}\nRun Code Online (Sandbox Code Playgroud)\n这按预期工作,并且以下代码在 API 16 模拟器上运行时不会崩溃:
\nArrayList<String> arr = new ArrayList<>();\narr.add("hello");\n// \xe2\x86\x93 this is a Java 8 API and crashes on API 16 if coreLibraryDesugaringEnabled=false\narr.removeIf(s -> true); \nRun Code Online (Sandbox Code Playgroud)\n现在,问题是 lint 在这一行显示错误:\nCall requires API level 24 (current min is 16): java.util.ArrayList#removeIf
如何修复 Android Studio/lint 的错误行为?
\n我不想抑制该错误,因为它在实际上合法时可能很有用。
\n上下文:
我使用AdMob中介在我的应用中显示横幅广告.我集成了Millennial广告网络SDK和Millennial AdMob适配器.
问题:我的应用支持Android API 9+,而Millennial SDK支持API 16+.更糟糕的是,SDK没有优雅地失败(没有向AdMob中介层返回任何广告,以便它可以继续沿着中介瀑布走下去),SDK在运行Android <16(Fatal Exception: java.lang.NoSuchMethodError
android.webkit.WebSettings.setAllowUniversalAccessFromFileURLs)的设备上崩溃
显然千禧一代开发人员并不打算解决这个问题,他们建议发布2个不同的APK("<16"没有他们的SDK和"16+"他们的SDK),这是一个麻烦的解决方案.
我更喜欢更简单的解决方案:在运行Android API <16的设备上,我想重现AdMob适配器丢失时会发生的情况:AdMob中介只会转到下一个网络.这意味着在我实例化AdMod中介横幅之前卸载或删除 Millennial适配器类.
问题:
有没有办法在运行时阻止给定类(来自第三方库)的任何未来瞬间?(例如,通过强制ClassNotFound异常)
出于某种原因,我的一个脚本中的shebang不起作用:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Hello World"
Run Code Online (Sandbox Code Playgroud)
当我执行此文件时,出现错误
% ./test.py
./test.py: 1: #!/usr/bin/env: not found
Run Code Online (Sandbox Code Playgroud)
有一个与我的内容没有问题的/usr/bin/目录:既env和python在那里,用正确的执行权.
Android Studio(0.5.3)让我发疯.
我从未遇到过Eclipse和ADT的任何严重问题.Android Studio是另一个故事:我无法使用它来正确构建单个项目.
所以,我正在尝试导入一个Android示例项目(我认为它具有正确的Gradle设置并且应该准备好导入):
C:\pathToMyAndroidSDK\sdk\samples\android-19\content\StorageProvider
Run Code Online (Sandbox Code Playgroud)
我得到的第一个错误如下:
Failed to refresh Gradle project 'StorageProvider'
The project is using an unsupported version of Gradle. Please use version 1.10.
Please point to a supported Gradle version in the project's Gradle settings or in the project's Gradle wrapper (if applicable.)
Fix Gradle wrapper and re-import project Gradle settings
Run Code Online (Sandbox Code Playgroud)
好的,所以我下载Gradle 1.10,并更改项目Gradle设置,以便它使用此本地Gradle分发而不是默认的gradle包装(它似乎包含在示例项目中).
这次我得到了一个不同的错误:
Failed to refresh Gradle project 'StorageProvider'
The project is using an unsupported version of the Android Gradle plug-in (0.8.3).
Version 0.9.0 …Run Code Online (Sandbox Code Playgroud) android gradle android-studio build.gradle android-gradle-plugin
我的 View宽度必须取决于屏幕宽度:
我希望我可以使用存储在XML文件中的维度:
mylayout.xml:
<View
android:layout_height="100dip"
android:layout_width="@dimen/myview_width"/>
Run Code Online (Sandbox Code Playgroud)
值-sw600dp/dimensions.xml:
<dimen name="myview_width">600dip</dimen>
Run Code Online (Sandbox Code Playgroud)
值/ dimensions.xml:
<dimen name="myview_width">FILL_PARENT</dimen> <!-- NOT SUPPORTED -->
Run Code Online (Sandbox Code Playgroud)
...但元素中FILL_PARENT不支持使用dimen.
在XML中实现这一目标的最简洁方法是什么?
android ×9
build.gradle ×2
java ×2
lint ×2
adb ×1
adbwireless ×1
admob ×1
bash ×1
c++ ×1
gradle ×1
ios ×1
objective-c ×1
performance ×1
python ×1
reference ×1
xml ×1