[英]Issue with calling setContentView(R.layout.activity_main) on some devices
我最近遇到了在某些 Android 設備上運行我的應用程序(監控孩子的手機位置)的問題。 它適用於以下設備:MI 5 SPlus (Android 8)、Red Mi Note 3 Pro (Android 10)、MI POCO X3(Android 10)、Sony Xperia L (Android 4.4.2)。 當我嘗試在三星 Galaxy S3 (Android 4.4.4) 上運行該應用程序時,它總是在調用 setContentView(R.layout.activity_main) 時崩潰。 然后我用一個 TextView 創建了一個簡單的測試應用程序,結果是一樣的——運行后崩潰。 這是我的代碼。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Samsung World!"/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package ru.volganap.nikolay.samsung_test;
import android.os.Bundle;
import android.app.ActivityManager;
import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="ru.volganap.nikolay.samsung_test">
<application
android:allowBackup="true"
android:appComponentFactory="whateverString"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:appComponentFactory">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
build.gradle(應用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
defaultConfig {
applicationId "ru.volganap.nikolay.samsung_test"
minSdkVersion 19
targetSdkVersion 30
//versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//implementation 'com.android.support:appcompat-v7:28.0.0'
//implementation 'com.android.support:support-v4:28.0.0'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.3.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0-alpha2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.3.1-alpha03'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha03'
}
調試窗口中的錯誤
E/AndroidRuntime: FATAL EXCEPTION: main
Process: ru.volganap.nikolay.samsung_test, PID: 20847
java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.volganap.nikolay.samsung_test/ru.volganap.nikolay.samsung_test.MainActivity}: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x1d
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2441)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500)
at android.app.ActivityThread.access$900(ActivityThread.java:171)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5679)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x1d
at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:464)
at androidx.constraintlayout.widget.ConstraintLayout$LayoutParams.<init>(ConstraintLayout.java:2885)
at androidx.constraintlayout.widget.ConstraintLayout.generateLayoutParams(ConstraintLayout.java:1955)
at androidx.constraintlayout.widget.ConstraintLayout.generateLayoutParams(ConstraintLayout.java:485)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:768)
at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:195)
at ru.volganap.nikolay.samsung_test.MainActivity.onCreate(MainActivity.java:13)
at android.app.Activity.performCreate(Activity.java:5582)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500)
at android.app.ActivityThread.access$900(ActivityThread.java:171)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5679)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method) Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'
我試圖清理和重建項目,使現金/重啟無效,但根本沒有效果。 有什么想法可以解決三星設備的問題嗎?
好的,這就是我改變的:
dependencies { // these are new versions of the libs
def appcompat_version = "1.3.1"
def constraintlayout_version = "2.1.4"
def test_runner = "1.4.0"
//implementation 'androidx.appcompat:appcompat:1.3.0-beta01' - the old version
implementation "androidx.appcompat:appcompat:$appcompat_version"
implementation "androidx.appcompat:appcompat-resources:$appcompat_version" // this lib was a new one I added
//implementation 'androidx.constraintlayout:constraintlayout:2.1.0-alpha2' - the old version
implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version"
//androidTestImplementation 'androidx.test:runner:1.3.1-alpha03' - the old version
androidTestImplementation "androidx.test:runner:$test_runner"
//androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0-alpha03' - the old version
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.