我正在写一款安卓游戏。现在,当我尝试在按钮阵列上运行foor循环时,它会从我设备上的应用程序崩溃。
抱歉希伯来笔记。
游戏是一个标志挑战概念,我将图像上传到MainActivity中的DataHandler。
按下startgame后,我对classicMode类有了新的意图,然后我就崩溃了。
现在当我从Button数组中放入/ *(注释)直到OnCreate关闭之前的for循环结束时,我可以运行并获取活动的基本视图而不会崩溃。
崩溃代码的类:
public class ClassicMode extends Activity {//מהמשחק עצמו
String pic;
Button answer1;
Button answer2;
Button answer3;
Button answer4;
MainActivity ma;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
answer1 = (Button)findViewById(R.id.button1);
answer2 = (Button)findViewById(R.id.button2);
answer3 = (Button)findViewById(R.id.button3);
answer4 = (Button)findViewById(R.id.button4);
Flags f = new Flags();
Random r = new Random();//הדגל שיבחר לשאלה
int num = r.nextInt(30);//Up
Random ra = new Random();//הדגלים שיהיו בתשובות
int numA = ra.nextInt(30);//Up
//Log.d("result", num+"");
f = ma.db.getFlag(num);//הצגת הדגל הרנדומלי שיצא
//Log.d(f.getClass().toString(), f.toString());
pic = f.getImage().toString();
pic_view(pic);//מעבר לפונקציה להשמת התמונה של הדגל במשחק
//מערך ארבע כפתורים כנגד ארבע תשובות
Button [] b = new Button[4];
b[0] = answer1;
b[1] = answer2;
b[2] = answer3;
b[3] = answer4;
int c=0;
for(int i =0; i<b.length; i++)
{
b[i].setText(f.getName().toString());//הכנסת שם דגל לכפתור התשובה
for(int j = 0 ; j<i; j++)
{
if(!b[j].getText().equals(f.getName().toString()))//בדיקה שלא קיימת תשובה זהה
{
c++;
if(c == i-1)
b[i].setText(f.getName().toString());
}
else
i--;
}
}
}//end of OnCreat
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.second, menu);
return true;
}
private void pic_view(String pic2) {
// TODO Auto-generated method stub
//גישה לדגל לפי שמו וייבוא התמונה
Log.d("Result from pic function " , pic2);
ImageView imageView = (ImageView)findViewById(R.id.imageView1);
String uri ="@drawable/";
uri += pic2;
int imageResource = getResources().getIdentifier(uri, pic2, getPackageName());//הצוות התמונה
Drawable res= getResources().getDrawable(imageResource);//ציור התמונה
imageView.setImageDrawable(res);
}
logcat:
01-29 16:35:12.251:E / AndroidRuntime(4398):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234) 01-29 16:35:12.251:E / AndroidRuntime(4398):at android.os.Handler.dispatchMessage(Handler.java:99)01-29 16:35:12.251:E / AndroidRuntime(4398):at android.os.Looper.loop(Looper.java:137)01-29 16:35:12.251: E / AndroidRuntime(4398):at android.app.ActivityThread.main(ActivityThread.java:5041)01-29 16:35:12.251:E / AndroidRuntime(4398):at java.lang.reflect.Method.invokeNative(Native Method)01-29 16:35:12.251:E / AndroidRuntime(4398):at java.lang.reflect.Method.invoke(Method.java:511)01-29 16:35:12.251: E / AndroidRuntime(4398):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 01-29 16:35:12.251:E / AndroidRuntime(4398):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)01-29 16:35:12.251:E / AndroidRuntime(4398):at dalvik.system.NativeStart.main(Native Method)01-29 16:35:12.251: E / AndroidRuntime(4398):引起:java.lang.NullPointerException 01-29 16:35:12.251:E / AndroidRuntime(4398):at com.example.flagsgame.ClassicMode.onCreate(ClassicMode.java:38)01-29 16:35:12.251:E / AndroidRuntime(4398):at android.app.Activity.performCreate(Activity.java:5104)01-29 16:35:12.251:E / AndroidRuntime(4398):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 01-29 16:35:12.251:E / AndroidRuntime(4398):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 01-29 16:35:12.251:E / AndroidRuntime(4398):... 11 more
答案 0 :(得分:-1)
根据Logcat,您将在ClassicMode.java的第38行获得Null指针异常。 为了帮助您,有必要知道您在这一行中有什么。