Android-исключение "необходимо использовать тему Theme.AppCompat" существует даже в Android-манифесте, стиль установлен правильно - PullRequest
0 голосов
/ 12 января 2019

Сейчас я имею дело с приложением Bluetooth, которое имеет интерфейс для поиска устройств пользователем, нажав кнопку, а затем приложение обнаружит и отобразит результат в ListView. Затем пользователь щелкает нужный элемент в ListView, чтобы установить соединение. После установления соединения приложение будет прослушивать подключенное устройство для любого входа. Я хотел бы сделать AlertDialog, когда пользователь ждет.

Я написал несколько кодов, пытаясь реализовать эту идею. Тем не менее, всегда есть исключение, которое говорит мне использовать тему Theme.AppCompat. Даже если я изменил AndroidManifest.xml или файл макета своей деятельности, заставив их использовать темы, связанные с Theme.AppCompat, он все равно показывает это исключение и вылетает.

Даже если я изменил AndroidManifest.xml или файл макета своей деятельности, заставив их использовать темы, связанные с Theme.AppCompat, он все равно показывает это исключение и вылетает.

Я использовал поток для прослушивания ввода (IOthread). Ниже приведены мои коды:

 private class IOThread extends Thread
  {
    private final BluetoothSocket actualSocket;
    private final InputStream actualInStream;
    private final OutputStream actualOutStream;
    private byte[] mmBuffer;//buffer store for the stream

    ......

    //Run method is to receive from client
    @Override
    public void run()
    {
        Log.v("BSTIOthread","start to listen for input");
        //I would like to add AlertDialog here
        ........
        while (!stopListening)
        {

            try
            {
                //After creating the AlertDialog, it will start to read
                numBytes = actualInStream.read(mmBuffer);
                Log.v("BSTClientListening","Something has been read.");
                //send the obtained bytes to the UI activity
                String theString = IOUtils.toString(mmBuffer,"ASCII");
                theString = theString.replaceAll("\\p{Cntrl}", "");
                Log.v("BSTServerInput","Message received = "+theString);
                if (theString.length()!=0)
                    stopListening = true;
                messageTextView.setText("Received: "+theString);
                Message readMsg = ClientHandler.obtainMessage(MessageConstants.MESSAGE_READ,numBytes,-1,mmBuffer);
                readMsg.sendToTarget();

            } catch (IOException e)
            {
               ......
            }
        }
    }

Ниже приведены мои коды в 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="com.abc.def.revisedbluetoothstdtest">

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission
    android:name="android.permission.BLUETOOTH_PRIVILEGED"
    tools:ignore="ProtectedPermissions" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:screenOrientation = "portrait"
    tools:ignore="GoogleAppIndexingWarning">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ServerActivity"
        />
    <activity android:name=".ClientActivity"
        />
</application>

Мой файл styles.xml показан ниже:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Полагаю, что после настройки AppTheme мои нужные AlertDialogs могут быть успешно показаны и больше исключений не будет. Однако, как вы можете видеть, хотя моя AppTheme в styles.xml использует темы Theme.AppCompat, она все равно выдает исключение и вылетает.

...