보기에 imageview를 추가 할 때 Android 런타임 오류

유선 604

메인 뷰 / 레이아웃에 이미지를 추가 할 때 런타임 오류가 발생합니다 (둘 다 시도했습니다).

코드는 활동에서 시작하고 게임 보드를 만드는 데 문제가 없습니다. 게임 시작이 완료되면이 모든 것이 잘됩니다. 이 문제는 버튼을 눌러 화면에 이미지를 추가 할 때 발생하며, 뷰가 기본 뷰에 추가되는 순간 런타임 오류가 발생합니다. 내 코드에서 나는 모든 것을 Java로만 유지하고 XML 파일을 피하고 있으며 그것이 문제의 일부일 수 있는지 궁금합니다. 사람들이 레이아웃 인플레이터 방법을 사용하도록 제안한 비슷한 문제에 대한 해결책을 읽고 있었지만 XML 파일 없이는이 방법의 사용에 대한 참조를 찾을 수 없습니다.

내 코드는 다음과 같습니다.

(PS 미리보기 창에서 언젠가 깨지는 모습을 보았습니다 ... 오류 로그가 끝났습니다.

     RelativeLayout GameView = new RelativeLayout(this);
     GameView.setLayoutParams(new LayoutParams(
             screenHei,
             screenLen));




     //Start Game sequence
     ZoomView layout3 = new ZoomView(this);


     layout3.setLayoutParams(new LayoutParams(
             screenHei,
             screenLen));


     //Relative layout... aka base view that will be inserted in the zoom view
     RelativeLayout baseBoard = new RelativeLayout(this);
     //LinearLayOut Setup


     baseBoard.setLayoutParams(new LayoutParams(
             screenHei,
             screenLen));


        LinearLayout linearLayout= new LinearLayout(this);

        linearLayout.setOrientation(LinearLayout.VERTICAL);

        linearLayout.setLayoutParams(new LayoutParams(
                 screenHei,
                 screenLen));
        //ImageView Setup
        ImageView imageView = new ImageView(this);
        //setting image resource
        imageView.setImageResource(R.drawable.bluepage);
        //setting image position

        imageView.setLayoutParams(new LayoutParams(
                 screenHei,
                 screenLen));
        //adding view to layout
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        linearLayout.addView(imageView);
        //make visible to program
        linearLayout.setX(0);
        linearLayout.setY(0);
//   RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
//              RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT);
//      lp.addRule(RelativeLayout.BELOW, v.getId());

        baseBoard.addView(linearLayout); 
     layout3.setX(0);
     layout3.setY(0);



        final RelativeLayout menuMobile = new RelativeLayout(this);


         menuMobile.setLayoutParams(new LayoutParams(
                 200,
                 200));
         menuMobile.setBackgroundColor(0xFF000000 );

         Button ButtonMobile1 = new Button(this);
         ButtonMobile1.setBackgroundColor(0xFFCCFFCC);
         ButtonMobile1.setText("test1");
         ButtonMobile1.setTextSize(6);
         ButtonMobile1.setLayoutParams(new LayoutParams(155,66));
         ButtonMobile1.setX(100);
         ButtonMobile1.setY(40);
         menuMobile.addView(ButtonMobile1); 
         ButtonMobile1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                 Log.v("prepare to add barrack! "," testing Barrack ");
                 menuMobile.setVisibility(View.INVISIBLE);

                 @SuppressWarnings("rawtypes")
                ArrayList aList = (ArrayList) GroundWork.get(selectedX);
                 GameTile axs = (GameTile) aList.get(selectedY);

                   axs.selected=1;
                   axs.createBuilding(1,1,1);


                   addPicture(axs.imgSizeIds);


                   Log.v("tile selected value and information "," axs.selected :" + axs.selected);
                }
            });


     valueX=21;
     valueY=12;
     //Base map builder
     for(int l=0; l<=valueX; l++){
        dimension.clear() ;
        for (int w=0; w<=valueY; w++){


    // ArrayList<Button> dimension = new ArrayList<Button>();

     LinearLayout buttonLayout= new LinearLayout(this);
     buttonLayout.setOrientation(LinearLayout.VERTICAL);
     buttonLayout.setLayoutParams(new LayoutParams(
                40,
                40));

     buttonLayout.setX(l*40);
     buttonLayout.setY(w*40);   

     System.out.println("Object Creation");
     final GameTile Tile = new GameTile();
     Tile.onCreate();
     Tile.pos_x=l;
     Tile.pos_y=w;
     System.out.println("Object                       !! CREATED !!");

     System.out.println("Object  added to prelim layout");

     Button b1 = new Button(this);
     b1.setBackgroundColor(0xFFCCFFCC);
     b1.setText(" ");
     b1.setLayoutParams(new LayoutParams(38,38));
     buttonLayout.addView(b1);
     baseBoard.addView(buttonLayout); 


        b1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                 Log.v(Tile.button_hit,Tile.button_hit);
                // toggleMobileMenu();
                 menuMobile.setVisibility(View.VISIBLE);

                 menuMobile.setX(Tile.pos_x*40);
                 menuMobile.setY(Tile.pos_y*40);

                 selectedX=Tile.pos_x;               
                 selectedY=Tile.pos_y;
                }
            });


        dimension.add(Tile); 


        }
        GroundWork.add(dimension); 
        System.out.println(" "+l);
     }

LinearLayout linearL = new LinearLayout (this); linearL.setOrientation (LinearLayout.VERTICAL);

linearL.setLayoutParams (new LayoutParams (40, 40));

linearL.setX (300); linearL.setY (340);

ImageView iv = new ImageView (this);

iv.setImageResource (R.drawable.castle);

       iv.setX(selectedX*40);
       iv.setY(selectedY*40);

        linearL.addView(iv); 

        player1img.add(iv); 

            linearL.setLayoutParams(new ViewGroup.LayoutParams(40,40));

        baseBoard.addView(linearL);

//   setContentView(layout);
     Log.v("Added view to program", "Added view to program");

     imageView.setBackgroundColor(0xFF000000 );
     linearLayout.setBackgroundColor(0xFF000000 );
    layout3.setBackgroundColor(0xFF000000 );

    int ACount;
    ACount = GroundWork.size();
    System.out.println("ACount");
    System.out.println(ACount);

    //Casting test
     //ArrayList<Button> checking = GroundWork.get(2);
    //Temp solution

        int BCount;
        BCount = dimension.size(); 
        System.out.println("BCount");
        System.out.println(BCount);

    //Adding final product to view  
         RelativeLayout menuView = new RelativeLayout(this);


         menuView.setLayoutParams(new LayoutParams(
                 screenHei,
                 150));
         menuView.setBackgroundColor(0xFF000000 );

         Button sendUnit = new Button(this);
         sendUnit.setBackgroundColor(0xFFCCFFCC);
         sendUnit.setText("test");
         sendUnit.setTextSize(8);
         sendUnit.setLayoutParams(new LayoutParams(155,66));
         sendUnit.setX(100);
         sendUnit.setY(40);
         menuView.addView(sendUnit); 
         sendUnit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                 Log.v(" test "," test ");
                 menuMobile.setVisibility(View.INVISIBLE);

                }
            });

        layout3.addView(baseBoard); 
        GameView.addView(layout3); 
        GameView.addView(menuView); 

        //Activating final View
        setContentView(GameView);


        GameView.addView(menuMobile); 


}

public void addPicture (int imgSizeIds) {



     LinearLayout linearL= new LinearLayout(this);
     linearL.setOrientation(LinearLayout.VERTICAL);
     linearL.setLayoutParams(new LayoutParams(
                 40,
                 40));

     linearL.setX(selectedX*40);
     linearL.setY(selectedY*40);

    Log.v(" Adding Image in view and array ","   " + imgSizeIds);
    ImageView iv = new ImageView(this);

     Log.v(" Setting Image ","   " + imgSizeIds);
     iv.setImageResource(imgSizeIds);   
     iv.setImageResource(R.drawable.castle);
       Log.v("  Image assigned","   " + imgSizeIds);   
       iv.setX(selectedX*40);
       iv.setY(selectedY*40);

     Log.v(" Adding Image in layout  ","   " + imgSizeIds);
    linearL.addView(iv); 

      //  LayoutInflater popupLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        Log.v(" Adding layout in   Mainview ","   " + imgSizeIds);
        //linearL.showAtLocation(baseBoard, android.view.Gravity.NO_GRAVITY, 100, 100);
        //linearL = popupLayoutInflater.inflate(R.layout.baseBoard, null);

        linearL.setLayoutParams(new ViewGroup.LayoutParams(40,40));


  //     RelativeLayout lL = findViewById(baseBoard);

   //           lL.addView(linearL);




        baseBoard.addView(linearL); 

         Log.v(" Adding in       array ","   " + imgSizeIds);
           player1img.add(iv); 

    Log.v(" COMPLETED  ","   " + imgSizeIds);
}

}

오류 기록

08-11 03 : 51 : 38.521 : V / this_is_a_fucking_joke (768) : this_is_a_fucking_joke 08-11 03 : 51 : 39.701 : V / 막사 추가 준비! (768) : 막사 테스트 08-11 03 : 51 : 39.711 : V / CREATING 1 동 (768) : CREATING 1 동
08-11 03 : 51 : 39.711 : V / CREATING building end of object (768) : CREATING building end of object
08-11 03 : 51 : 39.711 : V / 뷰 및 배열에 이미지 추가 (768) : 2130837505 08-11 03 : 51 : 39.711 : V / 설정 이미지 (768) : 2130837505 08-11 03 : 51 : 39.711 : V / 할당 된 이미지 (768) : 2130837505 08-11 03 : 51 : 39.721 : V / 레이아웃에서 이미지 추가 (768) : 2130837505 08-11 03 : 51 : 39.721 : V / 메인 뷰에서 레이아웃 추가 (768) : 2130837505 08- 11 03 : 51 : 39.721 : D / AndroidRuntime (768) : VM 종료 08-11 03 : 51 : 39.721 : W / dalvikvm (768) : threadid = 1 : 잡히지 않은 예외로 스레드 종료 (group = 0x40a71930) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : FATAL EXCEPTION : main 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : java.lang.NullPointerException 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : com.example.test2.GameBoard.addPicture (GameBoard.java:374) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : com.example.test2.GameBoard $ 1.onClick (GameBoard .java : 169) 08-11 03 : 51 : 39.761 :E / AndroidRuntime (768) : android.view.View.performClick (View.java:4204) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : android.view.View $ PerformClick.run (View .java : 17355) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : android.os.Handler.handleCallback (Handler.java:725) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) ) : at android.os.Handler.dispatchMessage (Handler.java:92) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : at android.os.Looper.loop (Looper.java:137) 08- 11 03 : 51 : 39.761 : E / AndroidRuntime (768) : android.app.ActivityThread.main (ActivityThread.java:5041) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : java.lang. reflect.Method.invokeNative (Native Method) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : at java.lang.reflect.Method.invoke (Method.java:511) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793) 08-11 03 : 51 : 39.761 : E / AndroidRuntime (768) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560) 08-11 03:51 : 39.761 : E / AndroidRuntime (768) : dalvik.system.NativeStart.main (Native Method)에서

누군가 내가 뭘 잘못하고 있는지 또는 이해하지 못하는지 알 수 있다면 도움을 주셔서 감사합니다. 범위 문제입니까? 올바른 유형의 컨테이너를 사용하고 있습니까 ... 모르겠습니다 :(

감사@

Tmdean

문제는 baseBoard를 멤버 변수로 선언하지만 onCreate 메서드에서 baseBoard라는 로컬 변수로 마스킹하는 것입니다 (또는 게시 한 코드의 첫 번째 덩어리가 어디에서 왔는지).

내가 생각하는 것은 다음과 같습니다.

public class MyActivity extends Activity {
    RelativeLayout baseBoard;

    protected void onCreate(Bundle savedInstanceState) {
        RelativeLayout baseBoard = new RelativeLayout(this);
    }
}

이 코드에서 "baseBoard"라는 두 개의 다른 변수를 선언합니다. onCreate에 선언 된 변수는 "baseBoard"멤버 변수를 마스킹하고 설정되지 않도록합니다. 이것이 클릭 핸들러에서 널 포인터 예외가 발생한 이유입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

테이블 정보를 검색 할 때 3265 런타임 오류

분류에서Dev

클래스 생성자에서 벡터를 사용할 때 런타임 오류가 발생합니까?

분류에서Dev

런타임에 스프라이트를 추가 할 때 XNA 4.0 게임 충돌

분류에서Dev

AWS Lambda가 dynamoDB에 액세스하려고 할 때 런타임 오류-ClassNotFoundException

분류에서Dev

이미지를 추가하려고 할 때 Microsoft VBScript 런타임 오류 '800a0034'

분류에서Dev

Django 템플릿에서 DefaultDict를 반복 할 때 이상한 런타임 오류

분류에서Dev

Calabash Android 런타임 오류 : 키 가드를 제거 할 수 없습니다.

분류에서Dev

런타임시 UIDatePicker를 UIView에 추가 할 때 발생하는 문제

분류에서Dev

SPOJ의 COINS — 런타임 오류 (SIGSGEV)가 발생할 때마다

분류에서Dev

pip를 사용하려고 할 때 런타임 오류

분류에서Dev

FormControl ListBox에서 값을 검색 할 때 런타임 오류

분류에서Dev

런타임 오류를 일으키는 toolbarItems에 UIButtonTypeDetailDisclosure 추가

분류에서Dev

런타임 오류 '9'처리 : 워크 시트를 반복 할 때 아래 첨자가 범위를 벗어남

분류에서Dev

복사 / 붙여 넣기 기능을 사용할 때 런타임 오류 1004가 발생합니다.

분류에서Dev

보기 티커를 추가하려고 할 때 drupal 오류 500

분류에서Dev

OSX에서 빌드 할 때 dlib / dlib-android가 런타임에 충돌 함

분류에서Dev

'WScript.Shell'개체의 'Run'메서드를 사용할 때 런타임 오류가 발생합니다.

분류에서Dev

간단한 Docker 이미지를 실행할 때 왜 oci 런타임 오류가 발생합니까?

분류에서Dev

VBA-이 코드를 실행할 때 런타임 오류 '1004'가 발생합니다.

분류에서Dev

나누기가있는 간단한 수식을 삽입 할 때 런타임 오류 1004

분류에서Dev

Excel 2007 매크로 : VB에서 값을 배열에 저장할 때 런타임 '91'오류가 발생 함

분류에서Dev

실시간 Linux에서 작업을 예약 할 때 런타임 오류가 발생합니까?

분류에서Dev

LibreOffice Calc에서 셀을 반복 할 때 런타임 오류가 발생합니다.

분류에서Dev

하나의 dll 파일로 인해 Azure에 배포 할 때 런타임 오류가 발생했습니다.

분류에서Dev

존재하지 않는 HashSet에서 요소를 제거하려고 할 때 런타임 오류가 발생하지 않는 이유는 무엇입니까?

분류에서Dev

숨겨진 시트에 자동 필터를 적용 할 때 런타임 오류 '1004'

분류에서Dev

런타임 오류 : Python에서 래퍼를 사용할 때 알 수없는 MATLAB 위치

분류에서Dev

그래프에서 구성 요소를 찾으려고 할 때 런타임 오류

분류에서Dev

C #에서 클래스의 목록 속성에 항목을 추가하려고 할 때 런타임 오류가 발생했습니다.

Related 관련 기사

  1. 1

    테이블 정보를 검색 할 때 3265 런타임 오류

  2. 2

    클래스 생성자에서 벡터를 사용할 때 런타임 오류가 발생합니까?

  3. 3

    런타임에 스프라이트를 추가 할 때 XNA 4.0 게임 충돌

  4. 4

    AWS Lambda가 dynamoDB에 액세스하려고 할 때 런타임 오류-ClassNotFoundException

  5. 5

    이미지를 추가하려고 할 때 Microsoft VBScript 런타임 오류 '800a0034'

  6. 6

    Django 템플릿에서 DefaultDict를 반복 할 때 이상한 런타임 오류

  7. 7

    Calabash Android 런타임 오류 : 키 가드를 제거 할 수 없습니다.

  8. 8

    런타임시 UIDatePicker를 UIView에 추가 할 때 발생하는 문제

  9. 9

    SPOJ의 COINS — 런타임 오류 (SIGSGEV)가 발생할 때마다

  10. 10

    pip를 사용하려고 할 때 런타임 오류

  11. 11

    FormControl ListBox에서 값을 검색 할 때 런타임 오류

  12. 12

    런타임 오류를 일으키는 toolbarItems에 UIButtonTypeDetailDisclosure 추가

  13. 13

    런타임 오류 '9'처리 : 워크 시트를 반복 할 때 아래 첨자가 범위를 벗어남

  14. 14

    복사 / 붙여 넣기 기능을 사용할 때 런타임 오류 1004가 발생합니다.

  15. 15

    보기 티커를 추가하려고 할 때 drupal 오류 500

  16. 16

    OSX에서 빌드 할 때 dlib / dlib-android가 런타임에 충돌 함

  17. 17

    'WScript.Shell'개체의 'Run'메서드를 사용할 때 런타임 오류가 발생합니다.

  18. 18

    간단한 Docker 이미지를 실행할 때 왜 oci 런타임 오류가 발생합니까?

  19. 19

    VBA-이 코드를 실행할 때 런타임 오류 '1004'가 발생합니다.

  20. 20

    나누기가있는 간단한 수식을 삽입 할 때 런타임 오류 1004

  21. 21

    Excel 2007 매크로 : VB에서 값을 배열에 저장할 때 런타임 '91'오류가 발생 함

  22. 22

    실시간 Linux에서 작업을 예약 할 때 런타임 오류가 발생합니까?

  23. 23

    LibreOffice Calc에서 셀을 반복 할 때 런타임 오류가 발생합니다.

  24. 24

    하나의 dll 파일로 인해 Azure에 배포 할 때 런타임 오류가 발생했습니다.

  25. 25

    존재하지 않는 HashSet에서 요소를 제거하려고 할 때 런타임 오류가 발생하지 않는 이유는 무엇입니까?

  26. 26

    숨겨진 시트에 자동 필터를 적용 할 때 런타임 오류 '1004'

  27. 27

    런타임 오류 : Python에서 래퍼를 사용할 때 알 수없는 MATLAB 위치

  28. 28

    그래프에서 구성 요소를 찾으려고 할 때 런타임 오류

  29. 29

    C #에서 클래스의 목록 속성에 항목을 추가하려고 할 때 런타임 오류가 발생했습니다.

뜨겁다태그

보관