2011-02-16 11 views
1

を閉じメッセージ、または例外がスローされます。不思議なことに、これは2.2と2.3.3の下でエミュレータで正常に動作します。 Nexus 1を実行しているときに閉じます2.2.1SharedPreferences.Editor.apply力は、私は次のコードを使用してい

私は上記の回避策を持っていますが、終了の原因については興味があります。

誰でも手助けできますか?

乾杯、Venatu

+2

強制終了とは、ログに詳細なスタックトレースがあることを意味します。投稿してください。 – EboMike

答えて

4

apply()は、APIレベル9(別名、アンドロイド2.3)に添加しました。 Android 2.2では使用しないでください。

+0

Doh!私はそれが簡単だろうとは思わなかった。返信いただきありがとうございます – Venatu

0

それは私がこのようkodeを使用し簡単です:

if (respondsTo(editor, "apply")) invoke(editor, "apply”); 
else editor.commit(); 

、その後、私は、静的な輸入品としてこれら二つの魔法のメソッドを持っています。..

public static boolean respondsTo(Object object, String methodName) { 
    try { 
     object.getClass().getMethod(methodName, (Class<?>[]) null); 
     return Yes; 
    } catch (NoSuchMethodException e) { 
     return No; 
    } 
} 

public static Object invoke(Object object, String methodName) { 
    try { 
     return object.getClass().getMethod(methodName, (Class<?>[]) null).invoke(object); 
    } catch (Exception e) { 
     return INVOKE_FAILED; 
    } 
} 

ことがあれば問題になることができるようにUIをブロックしながら実行をコミット大量のデータを節約できます。コミットのためにバックグラウンドスレッドを使用しましたが(それは問題です...)、今では多くのユーザーに2.3があるので、古いものを切り替えるべきだと思います...

関連する問題