1

私は以前にこの質問をしましたが、痕跡や答えはありません。何か見落としたらごめんなさい。

EditTextの2D配列のテーブルレイアウトをプログラムで行います。背景色を設定すると、注文が消去されます。解決策は9つのパッチであることを理解しています。XMLレイアウトでうまく機能するものをいくつか作成しましたが、プログラムで適用すると次のようにアプリがハングします。

TableLayout tl = new TableLayout(this);
//  tl.setBackgroundColor(0xff498263);
  TableRow tr[] = new TableRow[9];

NinePatchDrawable ninenine = (NinePatchDrawable) 
             getResources().getDrawable(R.drawable.ninenine) ;
//      Toast.makeText(this, "getResources is not null",
//              Toast.LENGTH_LONG).show();  

  int x, y; 

  for (x = 0; x < 9; x++) {
    tr[x] = new TableRow(this); 
        for (y = 0; y < 9; y++) {
            entry[x][y] = new EditText(this);
            entry[x][y].setText("");
            entry[x][y].setWidth(52);
            entry[x][y].setEnabled(true);
            entry[x][y].setClickable(false);
            entry[x][y].setInputType(2);
        //  entry[x][y].setBackground(ninenine);
            entry[x][y].setBackgroundColor(0x880000ff);

プログラムはコンパイルされますが、ハングします。ナインナインをコメントアウトすると機能しますが、境界線はありません。

私が理解していないlog.txt:

11-13 10:33:29.730: I/dalvikvm(2155): Could not find method android.widget.EditText.setBackground, referenced from method com.example.test_layout.MainActivity.onCreate
11-13 10:33:29.730: W/dalvikvm(2155): VFY: unable to resolve virtual method 2897: Landroid/widget/EditText;.setBackground (Landroid/graphics/drawable/Drawable;)V
11-13 10:33:29.730: D/dalvikvm(2155): VFY: replacing opcode 0x6e at 0x00b4
11-13 10:33:29.730: D/dalvikvm(2155): VFY: dead code 0x00b7-0113 in Lcom/example/test_layout/MainActivity;.onCreate (Landroid/os/Bundle;)V
11-13 10:33:29.790: D/dalvikvm(2155): GC_EXTERNAL_ALLOC freed 42K, 45% free 2995K/5379K, external 0K/0K, paused 48ms
11-13 10:33:29.810: D/AndroidRuntime(2155): Shutting down VM
11-13 10:33:29.810: W/dalvikvm(2155): threadid=1: thread exiting with uncaught exception (group=0x40139578)
11-13 10:33:29.810: E/AndroidRuntime(2155): FATAL EXCEPTION: main
11-13 10:33:29.810: E/AndroidRuntime(2155): java.lang.NoSuchMethodError: android.widget.EditText.setBackground
11-13 10:33:29.810: E/AndroidRuntime(2155):     at com.example.test_layout.MainActivity.onCreate(MainActivity.java:73)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.os.Looper.loop(Looper.java:130)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at android.app.ActivityThread.main(ActivityThread.java:3691)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at java.lang.reflect.Method.invokeNative(Native Method)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at java.lang.reflect.Method.invoke(Method.java:507)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
11-13 10:33:29.810: E/AndroidRuntime(2155):     at dalvik.system.NativeStart.main(Native Method)
11-13 10:33:31.810: I/dalvikvm(2155): threadid=4: reacting to signal 3
11-13 10:33:31.830: I/dalvikvm(2155): Wrote stack traces to '/data/anr/traces.txt'

この問題は、ソースとコンパイル済みの9つのパッチの間ですか?

4

1 に答える 1

9

そのエラーが発生したときにテストするために使用しているAndroidのバージョンは何ですか?

setBackground(Drawable background)API16以降でのみ使用できます。minSdkVersionがそれよりも低いが16の場合、targetSdkVersionコンパイルはOKですが、実行時にAndroidのバージョンが低い場合は失敗します。

その場合は、setBackgroundDrawable(Drawable background)代わりに使用してください。

于 2012-11-19T01:46:08.623 に答える