2

アンドロイドプログラミング初心者です。以下のエラーを取得しています。

04-07 14:49:05.452: ERROR/AndroidRuntime(1566): FATAL EXCEPTION: main
        java.lang.OutOfMemoryError
        at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
        at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
        at java.lang.StringBuilder.append(StringBuilder.java:216)
        at com.myapp.StartupActivity.onListItemClick(StartupActivity.java:87)
        at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
        at android.widget.AdapterView.performItemClick(AdapterView.java:292)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
        at android.widget.AbsListView$1.run(AbsListView.java:3168)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4340)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

タブ レイアウトを使用し、タブを制御するための 3 つのアクティビティがあります。アプリで使用できるメモリ ヒープを超えたと思います。タブから移動したときにオブジェクトを破棄する方法を教えてもらえますか? 以下のコードでエラーが発生します。

String separator = "|"
String myString = "";
for(String string : Mylist)
{
    myString += myString + string + separator;
}
4

1 に答える 1

1

String separator = "\\|" 代わりに試すString separator = "|"

Javaを使用してパイプ記号を使用する際に問題があるか、使用できますPattern.quote("|")

@Qerub 式文字列がJavaコードにコンパイルされている場合にのみ二重スラッシュが必要であることに注意してください。

Javaコンパイラは、リテラル スラッシュを式 String オブジェクトに格納するために 1 つのスラッシュを必要とします。これは正規表現に限ったことではなく、クラス ファイルでコンパイルされたすべての Java 文字列がこのように機能します。コンパイル済みクラス ファイルの文字列に 1 つのスラッシュが必要な場合は、Java ソースに 2 つのスラッシュを入力します。

正規表現が実行時に (コマンドライン引数またはプロパティ値を介して) Java プログラムに渡される場合、この最初のスラッシュは必要ありません。

パイプがリテラル文字として扱われるように、正規表現パーサーには別のスラッシュが必要です。式パーサーは、文字列がクラス ファイルにコンパイルされたか、実行時に提供されたかを気にしません。

Source code: \\|

which compiles to...

Class file: \|

現在、正規表現パーサーによって次のように読み取られます...

式パーサーは次のように扱います。|

split() で使用したものと同じですが、alteriationとして扱われます。これは、文字列がすべての文字で分割されることを意味します

ソースコード: 「クエリ」

"query".split("|")のような結果を与える

q
u
e
r
y
于 2012-04-07T09:33:21.707 に答える