Android类无法运行,因为for循环

时间:2015-01-29 14:23:46

标签: java android arrays android-intent crash

我正在写一款安卓游戏。现在,当我尝试在按钮阵列上运行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

1 个答案:

答案 0 :(得分:-1)

根据Logcat,您将在ClassicMode.java的第38行获得Null指针异常。 为了帮助您,有必要知道您在这一行中有什么。