0

このコードは、Froyo でエミュレートする場合を除いて、すべて正常に動作するようです。Froyo を実行している実際のデバイスがないため、実際のデバイスでテストすることはできませんが、コミットすると FC になります。try ブロックにもコードがあるので、強制的に閉じるのではなく、例外をキャッチする必要があると思います。

private void getPrefs() {

    boolean dockRespond;
    boolean carDockRespond;
    boolean silenceRinger;

    settings = getSharedPreferences(PREFS_NAME, 0);
    editor = settings.edit();

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

    dockRespond = prefs.getBoolean("dockRespond", true);
    carDockRespond = prefs.getBoolean("carDockRespond", true);
    silenceRinger = prefs.getBoolean("silenceRinger", false);

    Intent startDock = new Intent(this, DockService.class);

    if(dockRespond)
    {
        //start dock listener service
        startService(startDock);
    }
    else
    {
        //stop dock listener service
        stopService(startDock);
    }

    try
    {
        editor.putBoolean(DOCKRESPONSEGLOBAL, dockRespond);
        editor.putBoolean(CARDOCKRESPONSEGLOBAL, carDockRespond);
        editor.putBoolean(SILENCERINGER, silenceRinger);
        editor.commit();
    }
    catch (Exception e)
    {
        Log.d("Exception caught: ", e.getMessage());
    }
}

すべての定数 (すべて大文字) は上記の定数領域で定義されており、前に述べたように、コードは Froyo を除くすべての OS バージョンで動作するようです。froyo では、FC は「editor.commit();」にあります。ライン。

助言がありますか?

4

2 に答える 2

0

I dont see anywhere in your code where you define what editor is? The first line of code that has editor in it is

editor = settings.edit(); 

but you never define what 'editor' is

于 2012-08-23T18:19:34.747 に答える
0

私はそれを考え出した。何が起こっていたのかというと、自分自身を無限ループに陥らせていたのです。そうしなければならなかった:

settings.unregisterOnSharedPreferenceChangeListener(prefsListener);

変更を加えてから

settings.registerOnSharedPreferenceChangeListener(prefsListener);

Froyo でのみ問題が発生した理由がわかりません。将来のバージョンでこれを防ぐために、Google は OS に変更を加えたに違いありません。

于 2012-09-04T20:42:07.110 に答える