첫 안드로이드 프로젝트 인데 체감 난이도가 굉장하네요
코드가 하려는 일은 뷰페이저를 사용하여 컨텐츠를 보여주려고 합니다만 지속적으로 런타임 애러가 납니다, 디버깅을 하려고 해봐도, 당췌 어디에 구멍이 났는지 파악이 안되서 질문 드립니다.

 

주석처리 하면서 확인 해 보았는데 웹뷰를 불러오거나, 리스트뷰를 불러오거나 둘중 하나만 불러와도 에러가 나며  특이한 점은


[리스트뷰] 리스트뷰는 해당 뷰를 로드하면 에러가 나고
[--][웹뷰][--] 웹뷰는 해당 뷰 이전 뷰만 로드되어도 에러가 발생합니다

 

그냥 XML파일을 불러와서 뷰로 내보내면 문제가 없는데 레이아웃 관련 xml 이외의 뭔가를 집어 넣기만 하면 여지없이 에러가 납니다.

도데체 에러의 원인이 뭘까요, 로그캣을 봐도 도통 감이 안잡혀서 질문드립니다.

 

전체 소스와 Log 파일을 포함 하였습니다.

 

public class startApp extends Activity { // 뷰페이저 용도로
 
 public String[] CallListString = new String[] {
  "리스트 내용1", "리스트 내용1", "리스트 내용1", "리스트 내용1", "리스트 내용1", "리스트 내용1", "리스트 내용1",
 };

 int mNum; 
 
 private final int COUNT=5;    //아이템 갯수
 private int mPrevPosition;    //이전에 선택되었던 포지션 값
 private ViewPager mPager;    //뷰 페이저
 private LinearLayout mPageMark;   //현재 몇 페이지 인지 나타내는 뷰
 private boolean isAnimated;    //애니메이션 효과 사용 여부
 
 //뷰 이미지 네비게이터
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  startActivity(new Intent(this, logo.class));
  setContentView(R.layout.activity_start_app);

  mPageMark = (LinearLayout)findViewById(R.id.page_mark);    //상단의 현재 페이지 나타내는 뷰

  mPager = (ViewPager)findViewById(R.id.pager);      //뷰 페이저
  
  mPager.setAdapter(new BkPagerAdapter(getApplicationContext()));  //PagerAdapter로 설정
  //mPager.setAdapter(new CustomPagerAdapter(getApplicationContext()));  //PagerAdapter로 설정
  
  mPager.setOnPageChangeListener(new OnPageChangeListener() {   //아이템이 변경되면, gallery나 listview의 onItemSelectedListener와 비슷
   //아이템이 선택이 되었으면
   @Override public void onPageSelected(int position) {
    mPageMark.getChildAt(mPrevPosition).setBackgroundResource(R.drawable.page_not); //이전 페이지에 해당하는 페이지 표시 이미지 변경
    mPageMark.getChildAt(position).setBackgroundResource(R.drawable.page_select); //현재 페이지에 해당하는 페이지 표시 이미지 변경
    mPrevPosition = position;         //이전 포지션 값을 현재로 변경
   }
   @Override public void onPageScrolled(int position, float positionOffest, int positionOffsetPixels) {}
   @Override public void onPageScrollStateChanged(int state) {}
  });
  initPageMark(); //현재 페이지 표시하는 뷰 초기화
  isAnimated = true;  //기본적으로 애니메이션 사용.
 }
//======================================>>>>
 //상단의 현재 페이지 표시하는 뷰 초기화
 //뷰 네비게이터
 private void initPageMark(){
  for(int i=0; i<COUNT; i++)
  {
   ImageView iv = new ImageView(getApplicationContext()); //페이지 표시 이미지 뷰 생성
   iv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

   //첫 페이지 표시 이미지 이면 선택된 이미지로
   if(i==0){
    iv.setBackgroundResource(R.drawable.page_select);
   }
   else{
   //나머지는 선택안된 이미지로
    iv.setBackgroundResource(R.drawable.page_not);
   }
   //LinearLayout에 추가
   mPageMark.addView(iv);
  }
  mPrevPosition = 0; //이전 포지션 값 초기화
 }
 
//======================================>>>>
 //Pager 아답터 구현 실질적인 뷰 제작
 private class BkPagerAdapter extends PagerAdapter{
  public Context mContext;
  //public LayoutInflater mInflater;
  
  public BkPagerAdapter( Context con) { super(); mContext = con; }
  @Override public int getCount() { return COUNT; } //여기서는 2개만 할 것이다.

  //뷰페이저에서 사용할 뷰객체 생성/등록
  @Override
  public Object instantiateItem(View pager, int position)
  {
   View v = null;
   v = new View(startApp.this. getApplicationContext());
   pager.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   final LayoutInflater inflater = (LayoutInflater) startApp.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

   switch(position){
    case 0: //  메인메뉴, XML로 최대한 레이아웃 짤것 코드제외
     v = inflater.inflate(R.layout.activity_menu_home, null);
     break;
    case 1: // 웹뷰 부분
    
     WebView mWeb;
     mWeb = (WebView)findViewById(R.id.web);
     mWeb.setWebViewClient(new MyWebClient());
     WebSettings set = mWeb.getSettings();
     set.setJavaScriptEnabled(true);
     set.setBuiltInZoomControls(true);
     mWeb.loadUrl("
http://m.myung.co.kr/");     
     v = inflater.inflate(R.layout.activity_menu_webview, null);
    
     break; 
    case 2: //  CallList 리스트뷰 부분
   
     ListView CallLists = (ListView)findViewById(R.id.call_list);
     CallLists.setAdapter(new ArrayAdapter<String>(startApp.this, android.R.layout.simple_list_item_1, CallListString));
     v = inflater.inflate(R.layout.tab_pr_call, null);
        
     break;
    case 3: // 

     
           break;   
    case 4: // 

     break;    
   }
   
   ((ViewPager)pager).addView(v ,0);
   return v;
  }
  
  //웹뷰
  class MyWebClient extends WebViewClient {
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl("url);
    return true;
   }
  }
 
  //뷰 객체 삭제.
  @Override public void destroyItem(View pager, int position, Object view) {
   ((ViewPager)pager).removeView((View)view);
  }
  // instantiateItem메소드에서 생성한 객체를 이용할 것인지
  @Override public boolean isViewFromObject(View view, Object obj) { return view == obj; }
  @Override public void finishUpdate(View arg0) {}
  @Override public void restoreState(Parcelable arg0, ClassLoader arg1) {}
  @Override public Parcelable saveState() { return null; }
  @Override public void startUpdate(View arg0) {}
 }