0

エミュレーターと個人用のデバッグ可能なデバイスに表示されると思われる例外に遭遇しました。

これは、preferences.xml ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
    <header 
        android:title="sound"
        android:summary=""
        android:icon="@android:drawable/ic_media_ff"
        android:fragment="com.example.app.activities.PreferencesActivity$SoundSettingsPreferenceFragment" />
</preference-headers>

これは、preferences_sound ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory 
        android:title="First Category"
        android:key="first_category">

        <CheckBoxPreference
            android:key="pref_cbx"
            android:title="checkbox"
            android:summary="checkbox summ"
            android:defaultValue="true" />

    </PreferenceCategory>
</PreferenceScreen>

これは関連するコードのアクティビティです:

import java.util.List;

import android.annotation.SuppressLint;
import android.preference.PreferenceActivity;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;

import com.example.app.R;

@SuppressLint("NewApi")
public class PreferencesActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
    }

    @Override
    public void onBuildHeaders(List<Header> target) {
        loadHeadersFromResource(R.xml.preferences, target);
    }

    public static class SoundSettingsPreferenceFragment extends PreferenceFragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences_sound);
        }
    }
}

これは出力エラーです:

10-30 11:31:58.812: E/ActivityThread(9783): Failed to inflate
10-30 11:31:58.812: E/ActivityThread(9783): android.view.InflateException: Binary XML file line #3: Error inflating class preference-headers

...

10-30 11:31:58.812: E/ActivityThread(9783): Caused by: java.lang.ClassNotFoundException: android.preference.preference-headers

...

4

3 に答える 3

2

Androidは、画面に合わせてドローアブルフォルダからビットマップのサイズを変更します。レイアウトの膨張中にそれを行います。「ドローアブル」フォルダにのみ画像があるアプリケーションがある場合(または、すべての解像度に1つのフォルダしかない場合)、サイズ変更が失敗することがあります。OOM例外を取得することもできます。したがって、drawable-mdpiフォルダーを作成し、その単一のフォルダーからmdpiにもすべてのドローアブルをコピーすることをお勧めします。

クレイジーに聞こえるかもしれませんが、この1つの変更で、ほとんどの膨らむレイアウトの問題は解消されます。それを試してみてください。とにかく傷つけません。

于 2012-10-30T09:52:23.747 に答える
2

通常、このエラーは、使用している外部ライブラリのエクスポートを怠ると表示されます。外部の jar ファイルを使用している場合は、必ずプロパティに移動し、そのタブのエクスポート チェックボックスをオフにしてください。

java build path -> order and export
于 2012-10-30T09:51:56.783 に答える
0

PreferenceActivity オブジェクトと互換性があるかどうか、PreferenceActivity に適用されたテーマを確認するだけです。

于 2014-03-14T12:10:38.220 に答える