我是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更多
答案 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()之后,通过调试检查随机数是否是交换机案例编号中的数字,否则在切换的情况下不会显示任何内容。