-4

私はJavaおよびAndroid開発の初心者です。ゲーム番号に基づいていくつかのテキスト値を表示しようとする、この非常に基本的な 4x4 数独アプリを開発しています。ただし、実行時に EditText フィールドのテキストは空白で表示されます。

以下は onCreate() のコードです

    a=gamenumber(); //returns a random game number
    displayrandommatrix(a); 
    findviewbyidfunc();

以下は、EditText で値を表示するためのサンプル コードです。

           public void displayrandommatrix(int n)
            {
            switch(n)
            {
            case 1:
        r11.setText("2");
        r12.setText("3");
        r23.setText("3");
        r24.setText("2");
        r32.setText("4");
        r33.setText("2");
        r41.setText("1");
        r44.setText("3");
        break;
            case 2:
        r12.setText("2");
        r13.setText("4");
        r21.setText("1");
        r24.setText("3");
        r31.setText("4");
        r34.setText("2");
        r42.setText("1");
        r43.setText("3");
        break;
               }

これは、ランダムなゲーム番号に使用しているコードです。

              public int gamenumber()
            {
        int b=randint.charAt(r.nextInt(randint.length()));
        return b;       
            }

         public void findviewbyidfunc()
       {
    checksol=(Button)findViewById(R.id.checksol1);
    r11=(EditText)findViewById(R.id.row1col1);
    r21=(EditText)findViewById(R.id.row2col1);
    r31=(EditText)findViewById(R.id.row3col1);
    r41=(EditText)findViewById(R.id.row4col1);
      }

Logcat エラーのリスト: 10-21 06:15:12.564: E/AndroidRuntime(1467): 致命的な例外: メイン 10-21 06:15:12.564: E/AndroidRuntime(1467): java.lang.RuntimeException: アクティビティ ComponentInfo{com を開始できません。 example.sudokunew/com.example.sudokunew.Level2_play}: java.lang.NullPointerException 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) で 10 -21 06:15:12.564: E/AndroidRuntime(1467): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app で.ActivityThread.access$600(ActivityThread.java:141) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 10-21 06: 15:12.564: E/AndroidRuntime(1467): android.os.Handler.dispatchMessage(Handler.java:99) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.os.Looper.loop(Looper.java:137) 10-21 06:15:12.564: E/AndroidRuntime(1467): at android.app.ActivityThread.main(ActivityThread.java:5103) 10-21 06:15:12.564: E/AndroidRuntime(1467): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 10-21 06:15 で:12.564: E/AndroidRuntime(1467): java.lang.reflect.Method.invoke(Method.java:525) 10-21 06:15:12.564: E/AndroidRuntime(1467): com.android.internal. os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-21 06:15:12.564: E/AndroidRuntime(1467): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) で 10 -21 06:15:12.564: E/AndroidRuntime(1467): dalvik.system.NativeStart.main(Native Method) 10-21 06:15:12.564: E/AndroidRuntime(1467): 原因: java.lang. NullPointerException 10-21 06:15:12.564:E/AndroidRuntime(1467): com.example.sudokunew.Level2_play.displayrandommatrix(Level2_play.java:177) 10-21 06:15:12.564: E/AndroidRuntime(1467): com.example.sudokunew.Level2_play.onCreate で(Level2_play.java:26) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.Activity.performCreate(Activity.java:5133) 10-21 06:15:12.564: E/AndroidRuntime (1467): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) で10-21 06:15:12.564: E/AndroidRuntime(1467): ... 11 もっと見る26) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.Activity.performCreate(Activity.java:5133) 10-21 06:15:12.564: E/AndroidRuntime(1467): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 10-21 06: 15:12.564: E/AndroidRuntime(1467): ... 11 詳細26) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.Activity.performCreate(Activity.java:5133) 10-21 06:15:12.564: E/AndroidRuntime(1467): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 10-21 06:15:12.564: E/AndroidRuntime(1467): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 10-21 06: 15:12.564: E/AndroidRuntime(1467): ... 11 詳細

4

5 に答える 5

0

乱数を生成するには、次のコード行を使用します

static Random ran1=new Random();
static int ranInt1;
ranInt1= ran1.nextInt(9)+1;
于 2013-10-21T10:08:13.777 に答える
0

EditTexts には設定可能な Hint 要素があります。これは、ユーザーが独自のテキストを入力していないかどうかを示すテキストです。

于 2013-10-21T10:00:29.950 に答える
0

あなたの質問はうまく提起されておらず、何が必要なのか明確ではなく、どこに問題があるべきなのか明確ではありません:乱数発生器関数? またはfindViewById関数?乱数発生器については、組み込みの Java コードを使用することをお勧めします。

Random rand = new Random(); //initialize this only one time, at the beginning, in the onCreate() method of your activity.    
int a = rand.nextInt(MAX_VALUE);

findViewById 関数については、次のようにすべての呼び出しを行いましたか?

r11 = (EditText)findViewById(R.id.R11_ID);
r12 = (EditText)findViewById(R.id.R12_ID);
r13 = (EditText)findViewById(R.id.R13_ID);
... and so on
于 2013-10-21T10:00:46.670 に答える
0

ケースの切り替えが問題になる可能性があります。適切なケースが処理されない場合、デフォルトのケースにヒットする可能性があります。デフォルトのケースを適切なコードでスイッチに入れます。

お気に入り

default:
    r11.setText("2");

    r12.setText("3");
    r23.setText("3");
    r24.setText("2");
    r32.setText("4");
    r33.setText("2");
    r41.setText("1");
    r44.setText("3");
于 2013-10-21T10:06:00.817 に答える
0

まず第一に、findviewbyidfunc() は displayrandommatrix(a) 関数の上にある必要があります。そうして初めて、EditText のリソース ID が取得されます。

私はそれが値を表示するかもしれないと思います。また、displayrandommatrix(a) メソッドが edittext の ID を持っていないため、displayrandommatrix(a) が findviewbyidfunc() の上にある場合、コードに従って例外が発生します。

第二に、上にfindviewbyidfunc()を移動した後、乱数がswitchケース番号の中の番号であるかどうかをデバッグで確認します。そうでない場合、switchケースでは行かず、何も表示されません。

于 2013-10-21T10:11:26.113 に答える