簡體   English   中英

在某些設備上調用 setContentView(R.layout.activity_main) 的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM