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

Java 运行时在EditText上显示文本值,java,android,Java,Android,我是java和android开发的新手。我正在开发这个非常基本的4x4数独应用程序,我试图根据游戏编号显示一些文本值。但是,在运行时,EditText字段中的文本显示为空白 下面是onCreate()中的代码。 下面是在EditText中显示值的示例代码 public void displayrandommatrix(int n) { switch(n) { case 1:

我是java和android开发的新手。我正在开发这个非常基本的4x4数独应用程序,我试图根据游戏编号显示一些文本值。但是,在运行时,EditText字段中的文本显示为空白

下面是onCreate()中的代码。

下面是在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);
      }
日志猫错误列表: 10-21 06:15:12.564:E/AndroidRuntime(1467):致命异常:主 10-21 06:15:12.564:E/AndroidRuntime(1467):java.lang.RuntimeException:无法启动活动组件信息{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):位于java.lang.reflect.Method.Invokenactive(本机方法) 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(本机方法) 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更多的编辑文本有一个可以设置的提示元素。这是显示用户是否没有输入自己的文本的文本。

您的问题提出得不好,不清楚您需要什么,也不清楚问题出在哪里:随机生成器功能?还是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);
对于findviewbyd函数,您是否完成了所有调用,如下面所示

r11 = (EditText)findViewById(R.id.R11_ID);
r12 = (EditText)findViewById(R.id.R12_ID);
r13 = (EditText)findViewById(R.id.R13_ID);
... and so on

开关箱可能是问题所在, 如果不处理适当的情况,它可能会遇到默认情况。 用适当的代码将默认情况置于开关中


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

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

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

我想它可能会显示这些值。此外,如果displayrandommatrix(a)位于findviewbyidfunc()之上,它将根据您的代码给出一个异常,因为displayrandommatrix(a)方法没有edittext的id


第二,在上面移动findviewbyidfunc()之后,通过调试检查随机数是否是开关箱编号中的数字,否则它在开关箱中不会出现,则不会显示任何内容。

findviewbyidfunc中有什么?请参阅我的答案,这是您的错误。.根据日志。.好的,但您的问题在哪里?编辑文本不显示任何内容?但是如果你在每个开关箱中都记录了什么,它会在logcat中打印出来吗?还是连开关都没有?在logcat中打印希望在EditText中显示的字符串,如果正确,则其他地方一定有问题。logcat?EditText中没有任何异常。可能是随机数没有进入开关盒。在添加默认案例后,我开始出现异常。我已经张贴在上面。考虑接受一个答案,它帮助你解决你的问题!感谢添加了默认部分,但似乎有很多异常。将函数findviewbydfunc()移到其他函数之上,它就工作了。。非常感谢你指出这一点。欢迎你,我的朋友,如果它解决了你的问题,你可以勾选这个作为答案。如果我的答案对你有帮助,你可以把它作为答案
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");
static Random ran1=new Random();
static int ranInt1;
ranInt1= ran1.nextInt(9)+1;