在运行时在EditText上显示文本值

时间:2013-10-21 09:52:46

标签: java android

我是java和android开发的新手。我正在开发这个非常基本的4x4数独应用程序,其中m试图根据游戏编号显示一些文本值。但是,在运行时,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):在android.app.ActivityThread.main(ActivityThread.java:5103) 10-21 06:15:12.564:E / AndroidRuntime(1467):at java.lang.reflect.Method.invokeNative(Native Method) 10-21 06:15:12.564:E / AndroidRuntime(1467):at java.lang.reflect.Method.invoke(Method.java:525) 10-21 06:15:12.564:E / AndroidRuntime(1467):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737) 10-21 06:15:12.564:E / AndroidRuntime(1467):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-21 06:15:12.564:E / AndroidRuntime(1467):at 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):at com.example.sudokunew.Level2_play.displayrandommatrix(Level2_play.java:177) 10-21 06:15:12.564:E / AndroidRuntime(1467):at 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更多

5 个答案:

答案 0 :(得分:0)

EditTexts有一个可以设置的提示元素。这是显示用户是否未插入任何文本的文本。

答案 1 :(得分: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

答案 2 :(得分: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");

答案 3 :(得分:0)

要生成随机数,请使用以下代码行

static Random ran1=new Random();
static int ranInt1;
ranInt1= ran1.nextInt(9)+1;

答案 4 :(得分:0)

首先,findviewbyidfunc()应位于displayrandommatrix(a)函数之上。只有这样它才能获得EditText的资源ID。

我认为它可能会显示值。如果displayrandommatrix(a)高于findviewbyidfunc(),它还会根据你的代码给出一个例外,因为displayrandommatrix(a)方法没有edittext的id

其次,在移动上面的findviewbyidfunc()之后,通过调试检查随机数是否是交换机案例编号中的数字,否则在切换的情况下不会显示任何内容。