2011-09-20 6 views
0

기본적으로 화면에는 9 개의 이미지가있는 GridView가 있습니다. 그 중 하나의 이미지를 클릭하면 setContentView를 사용하여 선택한 이미지를 표시하도록 이미지 뷰의 레이아웃을 엽니 다. 해당 이미지로 작업을 마친 후에는 다시 클릭하여 해당 contentView를 제거하고 GridView를 다시 표시합니다. 그 중 대부분은 다른 contentView에서 ImageView를 사용하는 경우를 제외하고 작동합니다.setContentView over ImageView 강제 종료

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setView(); 
    setContentView(R.layout.wall); 


    GridView gridview = (GridView) findViewById(R.id.gridview); 
    gridview.setAdapter(new ImageAdapter(this)); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
       long arg3) { 
      pos = position; 
      displayWallpaper(); 


     } 
    }); 
} 

private void displayWallpaper(){ 
     switch(pos){ 
     case 0: 
      setContentView(R.layout.wallpaper); 
      viewing=true; 
     ImageView image1 = (ImageView)findViewById(R.id.display); 
     rotate(R.drawable.wallpaper1, image1); 
      break; 
} 
} 

따라서 ImageView 선에서 강제 종료가 발생합니다. 그리고 내 추측으로는 디스플레이를 찾지 못하고 있지만 디스플레이는 배경 화면 레이아웃에 있습니다. 왜 강제 종료 될 수 있습니다 모든 아이디어. 더 많은 정보가 필요하면 무엇이 있는지 알려주세요. 그리고 내가 원하는 일을하는 더 좋은 방법이 있다면 알려주세요. 감사.

또한 테스트를 마쳤습니다. 회 돌이()가 주석 처리되고 ImageView가 있으면 강제 종료가 여전히 발생합니다. 둘 다 주석으로 처리하면 이미지가 표시되는 것과는 별개로 잘 작동합니다.

+0

당신은 당신의에서 onCreate()을 게시 할 수 있습니다 ... 당신이 디스플레이 레이아웃에 즉을을 지정된 레이아웃에 존재하지 않는했다? –

+1

ImageView의 존재 여부와 ID를 교차 선택 했습니까? 즉, 배경 화면 레이아웃으로 표시합니다. –

+0

@YashwanthKumar 위의 onCreate를 게시했습니다. – steven

답변

1

이미지보기 image1에 당신이 displayWallpaper() 코드를 호출하는 경우