我有2个活动.第二个.xml看起来像:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/TrainsListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
清单的一部分:
<activity android:name="TrainsActivity">
</activity>
Run Code Online (Sandbox Code Playgroud)
而我正在尝试获取TrainsListView:
mListView = (ListView) findViewById(R.id.TrainsListView);
Run Code Online (Sandbox Code Playgroud)
但在此mlistView为null之后.为什么?
在测试应用程序的调试版本时-可以。在我签署Google Play版本后,它开始进入FC,但有以下例外:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.wiagames.guitartuner/com.wiagames.guitartuner.activities.MainActivity}: java.lang.ClassNotFoundException: com.wiagames.guitartuner.activities.MainActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.wiagames.guitartuner.activities.MainActivity
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
Run Code Online (Sandbox Code Playgroud)
表现:
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<activity android:name=".activities.MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
Run Code Online (Sandbox Code Playgroud)
如何解决?
如何强制ActionBar分割标签(在top)和ActionMode(在bottom)?
android:uiOptions="splitActionBarWhenNarrow"没有帮助(我正在尝试宽屏模拟器)
我要反序列化0到false和1到true。
我创建了这个类:
class IntBooleanDeserializer : JsonDeserializer<Boolean?> {
override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): Boolean? {
json?.let {
return json.asInt == 1
}
return null
}
}
Run Code Online (Sandbox Code Playgroud)
并注册它:
private val gson = GsonBuilder()
.registerTypeAdapter(Boolean::class.java, IntBooleanDeserializer())
.create()
Run Code Online (Sandbox Code Playgroud)
并为此创建了测试类:
data class BooleanClass(val value: Boolean?)
Run Code Online (Sandbox Code Playgroud)
进而:
gson.fromJson("{\"value\": 0}", BooleanClass::class.java)
Run Code Online (Sandbox Code Playgroud)
此代码引发异常:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a boolean but was NUMBER at line 1 column 12 path $.value
Run Code Online (Sandbox Code Playgroud)
似乎 Gson 没有将我的反序列化器用于Boolean?,但成功地将其他自定义反序列化器用于其他类型(例如,用于枚举)。
为什么?
我在我的 gui-less 服务器上运行 Ubuntu 18.04。我已经安装了android-sdk包,它似乎坏了——没有tools/lib目录,所以sdkmanager不起作用:
dpkg -L android-sdk
/.
/usr
/usr/lib
/usr/lib/android-sdk
/usr/lib/android-sdk/tools
/usr/lib/android-sdk/tools/bin
/usr/lib/android-sdk/tools/proguard
/usr/lib/android-sdk/tools/proguard/bin
/usr/lib/android-sdk/tools/proguard/lib
/usr/share
/usr/share/doc
/usr/share/doc/android-sdk
/usr/share/doc/android-sdk/README.Debian
/usr/share/doc/android-sdk/changelog.gz
/usr/share/doc/android-sdk/copyright
/usr/lib/android-sdk/tools/bin/e2fsck
/usr/lib/android-sdk/tools/bin/fsck.ext4
/usr/lib/android-sdk/tools/bin/mkfs.ext4
/usr/lib/android-sdk/tools/bin/resize2fs
/usr/lib/android-sdk/tools/bin/screenshot2
/usr/lib/android-sdk/tools/bin/tune2fs
/usr/lib/android-sdk/tools/proguard/bin/proguard
/usr/lib/android-sdk/tools/proguard/bin/proguardgui
/usr/lib/android-sdk/tools/proguard/lib/proguard.jar
/usr/lib/android-sdk/tools/proguard/lib/proguardgui.jar
/usr/lib/android-sdk/tools/proguard/lib/retrace.jar
Run Code Online (Sandbox Code Playgroud)
./sdkmanager
Error: Could not find or load main class com.android.sdklib.tool.sdkmanager.SdkManagerCli
Run Code Online (Sandbox Code Playgroud)
如何在不手动安装 SDK 的情况下修复它?
一些自定义拨号器应用程序(例如,来自MotoBlur的拨号器)能够执行USSD请求.通过SDK实现这一点真的不可能吗?
我使用不同的方法检测2个视图上的滑动手势:第一个是通过GestureDetector,第二个是GestureOverlayView(我需要这个,因为第二个视图是GridView和GestureDetector在这个上不能正常工作).
第一个几乎是即时的,但第二个延迟约1秒(Nexus S,ICS).为什么,我该如何解决?
我无法改变方法,因为我稍后需要识别更复杂的手势,但我希望它能够立即发挥作用.
我有一个测试 ( APITestCase),我需要指定自定义标头:
class ListAppsAPITest(APITestCase):
def test_list_apps_versions(self):
response = self.client.get(reverse('api:applications:list'), None, **{'Device-Id': 'deadbeef'})
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的参数组合,但没有奏效。
如何在测试中指定自定义标头?
我有一个 Json 输入,例如:
\n{\n "type": "type_1",\n "data": {\n // ...\n }\n}\nRun Code Online (Sandbox Code Playgroud)\ndata字段可能会有所不同,具体取决于type。
所以,我需要一个反序列化器,它分别查看type(enum) 和反序列化data(例如,对于type_1值它是Type1类,对于type_2\xe2\x80\x94Type2等)。
我考虑过一个完全自定义的反序列化器(扩展 a KSerializer<T>),但它看起来有点矫枉过正。
进行此类反序列化的最佳(kotlin)方法是什么?
\n